Obviously, one such solution that props to mind is using curl with "-C" continue the download flag. So using curl your command is going to look like
curl -L -O http://xyz.url
and when the download has failed, switch over to command
curl -L -O -C - http://xyz.url
But this have another problem. You have to constantly monitor the download and launch the command as soon as it craps. Curl helps you by returning an error exit value if the download was not successful and otherwise. Wish there was a command to relaunch it based on the exit flag. Since there is none, ruby can come to your rescue. We can write a small ruby script to do just that. The ruby script looks like
ruby -e "while(\!system(\"curl -L -O -C - http://xyz.url\")); end"
Hope this helps. Happy New Year !