The fact that you can authenticate means that the connection to the server's control port (TCP port 21) is working. But this does not mean that the communication with the data port will work.
Problems of the type you are having almost always involve difficulties with NAT.
You might want to read up on passive vs active ftp and see how NAT can and will interfere with this.
http://slacksite.com/other/ftp.html