I'm not a CGI expert, but you need javascript to show upload progress of anykind from an html upload form. To do the upload all you need is the
module( google for 'perl CGI huge file upload'), but the question is the "timing out issue". If you are on shared hosting, they probably have a user limit on hogging apache's time. You should probably switch to ftp for this, especially if you want to resume broken transfers.