you need to monitor network traffic to see what is happening, if you're not getting any exceptions. Uploading of a large files can be slow on asymmetric lines where upload speed is much lower than download speed. In asp .net when you upload a file to the page, page life cycle will start when file is uploaded completely and stored in memory. Then you need to upload file from memory to the amazon s3 service. As you can see you're uploading file twice and depending on your network speed this can be very slow. Also you're adding additional load on server network throughput and any concurrent uploads will slow your server even more.
Best solution is to avoid sending file to your server and upload it directly to the s3 account, as it's explained in this article http://aws.amazon.com/articles/1434
. You would need to setup form for upload, and also create a page where you would handle successful upload and store file info to the db so you can use other modules like file gallery. You would use FileRepository to handle this, you can open another thread if you'll have troubles with saving file info in the db.
You can also create a proxy handler that would open upload connection on the s3 account and stream uploaded content directly when you receive it. It will make handling connections with s3 server easier but it's very similar to the first approach and it will still burden your server and I would not recommend it unless you need to fully control upload process.