Hey warwickwater,
I have almost the exact same problem. I am going to connect an arduino to an external server via a wifi-shield and then push current sensor values onto that web server. This web server will also have user input, which I would then send to the arduino to control a local motor. I would give the arduino a static ip address, but I need the ability to move to different wireless routers and therefore do not have the option to port forward either.
From my research into the matter thus far, it seems that the arduino is going to need to cycle through http calls so that the connection is open to receive data from the server. If this is the case, the server will have to wait until it hears from the arduino before it can push its data onto the arduino. However, I hope that a better solution than this can be found. As I am using the wifi-shield, our solutions may be slightly different, but I think the gist of the problem is the same.
I will ask my networking professor tomorrow about the matter and will keep researching the subject. If you happen to find any solutions, please let me know! I will inform you of any progress I make into the matter.