if you are using openbsd 3.4 or any other stateful firewall, the firewall should have an option to keep the source port (iChat 16384 as an example) the same, meaning that the firewall shouldn't translate the source port of the outgoing packet.
The option in openbsd is static-port at the very end of your nat entry. By doing so, I was able to connect with a friend (openbsd 3.4 firewall) with no problem. Just make sure that the appropriate ports are forwarded to the iChat client; i.e. 5060 UDP and the port ranges 16384 to 16403 (also UDP).
Mac OS X Hints
http://hints.macworld.com/article.php?story=2004010600561023