I have a fast server, and a reasonably fast home Internet connection. How can I simulate my page loading on a slow connection?
MODERATOR EDIT 2013-02-02
This extension is no longer available. https://addons.mozilla.org/en-US/firefox/addon/5917/
Fiddler Web Debugger
 is an excellent HTTP proxy debugging tool for Windows that includes a modem speed simulation feature (Main menu > Rules > Performance > simulate modem speed).
Fiddler is freeware.
I also like Charles Web Debugging Proxy , a similar tool. Charles can also throttle the connection speed. Charles is commercial software, but has a free trial available. What I like most about Charles is that it is cross-platform: Being Java-based, it can run on Windows, Mac OS X, and Linux. (You didn't mention which platform you're on, but it's probably one of those :-) http://www.fiddler2.com/fiddler2/
Try out http://www.webpagetest.org/test. You can run a test from any of their remote servers around the world and see how fast you page loads from those location. It will even let you use a dial-up speed or other slow speeds for most locations.
In Chrome, you can open the developer tools, click in the device icon (1), and then select the connection throttling (2).
Since around Chrome 45, it actually got a little bit easier: you don't have to be in device mode anymore.
You can slow down specific resources with Deelay.me:
Deelay.me  is a delay proxy for web resources. You can use it with your images/stylesheets/scripts, to increase their load time. http://deelay.me/
I assume the issue is the same one i have. When developing a web project internally, working on LAN servers, or VM, sometimes you need to simulate a real live scenario, as if the server load were high, in order to see how fast the page loads on the client side, and if some data that comes from the server, actually loads and doesn't mess up your client-sided functions, due to server behavior and delays. Since there is no perfect way of simulating real-case scenarios, the best thing is to make sure, that you fire events, only after the data has been completely retrieved from the server. Using the $.ajax complete function and async:false seems to do the trick so far. This ensures that whatever data-based event you need to fire, will not be executed unless the data exists.
You can emulate various net speeds on a Mac using an free application called Speedlimit 
SpeedLimit is a Leopard preference pane for limiting your network bandwidth to one of a couple different speeds — 768k DSL, Edge, 3G, and Dialup. This is really handy for testing your iPhone app under normal Edge network conditions in the iPhone Simulator.
A quick & dirty solution is to upload a large file to try to choke your outbound bandwidth, this should slow down your inbound connection, and is usually easier than trying to similarly choke inbound bandwidth.
Use a mobile phone to connect instead of fast home connection. Open multiple browser tabs with video streaming to further slow down the connection.
If you need something more permanent for lengthy testing then a QoS  solution could be adopted to meet your needs.
QoS can be set on any of the following: