I take it none of you here have ever had the experience of 2400 baud?
It was pretty much the same. Just that things were a hell lot uglier. I remember putting a text version of my site and a graphical version because a few gifs took forever to load. Forums were just all text. IRC actually lagged.. these days I could get throttled for using too much bandwidth but IRC would still be fast. I guess no videos, and porn was impossible, but digital cameras were still stupidly expensive back then anyway.
My biggest pet peeve is people who just whack away at the 'next' button during installs without reading anything and then wonder why it didn't work right.
If I read everything while installing, I'd be spending hours installing. Literally the main reason I buy NVidia over ATI these days is that there's less stuff to read when updating drivers
Heh, back to the OP, I do some networking engineering. Networks are a pretty abstract concept, but my favorite analogy is to think of it like a road system. Bandwidth is like the size of the road. You don't "run out" of it, it's just slow when too many are using it at the same time (and you get collisions).
There's a lot of things affecting it. The main one is really the speed of everything on the route. You might have a 1 MBps speed, but if the server you're connecting to only gives you 5 kbps, you only get 5 kbps, which is why I usually stick to minimum bandwidth to save money. If you want to compare speed, do it with speedtest (or at least test it on the same sites), and do it at the same time as your friend since some times are more than others.
Other factors might include your network card speed, drivers, processor speed, RAM, and operating system. Yup, even processor and OS. Network cards do much of their work in the card itself these days, but if you have a crappy one, the burden would be on the processor itself.
I don't really blame the router. Router's sort of like the traffic light, can't do much about them.. ISPs can be a bit funny though. They will give lower priority to people who use more bandwidth (assuming you're not given a hard limit). Usually they won't tell you. They'll also give higher priority for people who pay for more bandwidth, regardless of whether they're actually giving more bandwidth.
And over all, I hate torrents. They literally flood the system with lots of small packets. The problem with TCP is that it tries to gives all connections equal priority. So if you open one to access YouTube and someone opens a dozen connections to download a movie, that someone gets 12 times more overall bandwidth than you.
Firewalls, spyware, viruses, apps aren't really that big a deal, IMO. They use very little. There's programs to track that stuff... you could see how much you're using when you're not doing anything. In my experience, encryption uses up more resources, so if you're putting a heavy encryption on yours, check that.
tl;dr : Not much you can do. Use TCP optimizer