I think what you want can be done with wget.
Code:
$ wget --help | grep continue
-c, --continue ... resume getting a partially-downloaded file
$ wget -q http://www.site.example/file.iso &
$ while [ $(ls -l file.iso | awk '{print $5}' -lt 350000000 ]; do true; done
$ kill -INT $!
$ sleep 3600 # until you have more bandwidth
$ wget -c -q http://www.site.example/file.iso &
You might want to put this inside a shell script, perhaps in a loop, and replace 350000000 with 350MB *plus* the file size before downloading. `$!' is the process ID of the process last put into the background. The rest have manual pages (see also man bash).
I'll happily explain if you need me to. If so, please tell me the exact sequence of commands you have already tried, your reasoning behind it, and what you don't understand. script(1) might come in handy for this.