This is deeply techie, but rather important.
All networks have this thing called an 'MTU'. In short, when you download a file, the server and your computer break their communication up into packets. The MTU says what the largest packet size can be until it has to be broken down further by the network. Generally, you don't want to have your packets broken up by the network, as it's very slow. So you want your MTU to be the best it can be, so you can use your broadband at top speed.
Usually, computers and networks work out the MTU by themselves. However, various things can prevent this happening, which ultimately can cause all kinds of reliability issues with your connection.
I had this problem last week, after 'upgrading' to a Linksys WRT54G router. It has an MTU setting of 'auto' which ought to be fine, but I found it wasn't. A look on the Internet found two guides, one at The Scream and the other at ADSL Guide that explain how to change it (although if you have a router, you can probably just change it on there, not your own computer).
Once changed, downloading speed improved by about 10%, uploads started working (yes, they were completely broken!), and because I run a mail server, it managed to send it's mail once again. Definitely worth doing ;-)