And average speed is something like 2-3 Mbps.
"Test on real hardware" includes testing on the reduced bandwidth that most people have.
The only problem here is shitty internet in 2014. No civilized country has any excuse. Running fiber is incredibly inexpensive relative to almost all major infrastructure costs. A 2MB web page is not the problem.
The only problem here (and everywhere) is shitty developers thinking that being in 2014 is an acceptable excuse for extremely shoddy work. No self-respecting developer has any excuse. At the global scales, it must be costing trillions of dollars in wasted electricity. All 2MB web pages in the world only compound the problem when they should be < 100kb.
As with everything, there should be balance. This certainly isn't it.
If so, why is there so much JavaScript and other fluff loaded?
The increase in average pages sizes isn't really necessary. Everyone appears to be jumping on the "let's load LOADS of data" bandwagon, which isn't much fun on a mobile connection, let alone a 2G connection.
And before you say that 2G is unacceptable, let's see how well most rural areas cope, or how well you do in a valley in Wales.
Yes, poor Internet connectivity is not great, but let's not foolishly assume that everyone is on a fibre connection. I am, but others are not, and I certainly wouldn't write software in the belief that they are running a beefy development machine that I have, nor would I write software in the belief that everyone has the same network connection. (Would the argument be "buy a better computer" really be acceptable if software that I wrote ran slowly on someone's machine due to stupid non-optimised loops????)
Not everyone is experiencing the Internet the same as you, so don't assume that they are.
It would have been done in 3 seconds (which is still an insanely long amount of time) except that this image: https://i.creativecommons.org/l/by-nd/4.0/88x31.png took 49 seconds to load.
Chrome's network panel shows:
Blocking 27.15 s
DNS Lookup 0.137 ms
Connecting 21.76 s
SSL 20.59 s
Sending 0.129 ms
Waiting 78.344 ms
Receiving 1.252 ms
For a damn 5kb image.1.9MB is as large as some ENTIRE pieces of software executables (though they may be dynamically linked).
EDIT: Not meant nastily, more food for thought.