There are also problems around NAT as well as the server (X Client) sometimes needs a export DISPLAY=x.x.x.x, with x.x.x.x being the NAT'd IP address.
One of the best ways we've found for using X through firewalls and NAT is to use SSH and tunnel the X sessions. This works well and is far more secure. Every SSH Client I've used has a tick box option to enable this, and quite often you have to enable the X Windows option on your SSH server daemon configuration.
PuTTY is freely available if SSH client costs are a problem, but make sure you get the latest version.