Probably more important than the transfer size is the time taken. Several FTP servers have strict command-channel timeouts and have bugs ignoring data-channel traffic. That-is: They haven't seen any commands from the client within their timeout period and drop the connection regardless of a file-transfer in-progress. (PureFTPd is one such server)
* Use SCP (Must be enabled for user): "% scp LOCAL_FILE USERNAME@SERVER:PATH"
* See if you can configure your FTP client to send NOP/keepalive commands while data transfer is in progress (This works for some servers)
* Use WebDAV (DreamHost's WebDAV implementation kind of boxes you in on security grounds though)
* Use a different FTP client that does a keepalive/NOP during transfer that the server can accept (Yeah, that's a bit vague).
* Increase your upstream bandwidth.