You probably have a symmetric nat router, if you look in your impulsereator.log file in Documents\My Games\Gas Powered Games\Demigod you will probably see something like this nearish the start:
Connected to facilitator at 74.204.71.150:6004. My External: 123.456.789.123:56789 My Internal: 192.168.1.2:6002
where the external port number is not in the 6000-6200 range and is different than the internal port number. My old speedtouch router was of this type and did this and had lots of problems as you have.
Connected an older netgear router (DG834Gv3) i've had around and found that a lot better connecting as my external port matches my internal one, and demigod works a lot better.
I believe this is due to the way demigod connects, so someone connecting to you would get as follows in their impulsereactor.log:
[05-31-2009 21:26:06 840] Pinging player at player_name (36701) at 192.168.1.2:6002 (CONNECTION ACTIVITY)
[05-31-2009 21:26:06 841] Pinging player at player_name (36701) at 123.456.789.123:56789 (CONNECTION ACTIVITY)
So it tries to connect to the players internal IP first, i believe this is so that multiple people on a LAN can play together. Of course their internal IP is meaningless for anyone outside their lan, so that will just fail.
It then tries to connect to their external ip + external port, now depending on your router, it may not allow traffic through on this port, as it is a dynamic port, so it either has timed out allowing incoming connections in, or it only allows incoming connections in from a specific ip - most probably stardocks facilitator server.
Now if demigod did this :
[05-31-2009 21:26:06 840] Pinging player at player_name (36701) at 192.168.1.2:6002 (CONNECTION ACTIVITY)
[05-31-2009 21:26:06 841] Pinging player at player_name (36701) at 123.456.789.123:56789 (CONNECTION ACTIVITY)
[05-31-2009 21:26:06 841] Pinging player at player_name (36701) at 123.456.789.123:6002 (CONNECTION ACTIVITY)
Before falling back to NAT and then proxying, i believe a lot of people including yourself would have less problems as long as you opened your ports. As currently even if you open your ports, and your router generates a random dynamic port, demigod does not take advantage of this.