This is probably the best solution, as there isn't any way with two NATed connections to get them to talk to each other. (Bug or Feature? You decide) The problem of course with using a server in the middle is that the file has to be transfered entirely to and from the server.

The problem stems from how NATed connections work. If you're behind a NAT proxy, paths to your computer only become opened up when you send a packet out, or when you set a port-forwarding rule(which is eliminated by Tony's no-firewall-conrtoll mandate).

Does anyone know if/how a P2P client gets around this? I know kazaa works for me behind a NATed connection, but I'm not sure if transfers between two NATed connections work out or just fail.