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 but a repo has been created on Github . 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.
Router Method (QoS)
One of the easiest methods is actually by simply login into your router dashboard and tweaking the QoS  advanced settings. However... old, ISP provided or cheaper routers generally do not have the advanced QoS features which will allow you to throttle the bandwidth.
If you are among the majority of users with a cheaper or ISP provided router then you may be fortunate enough to have a router that is supported by open source projects whcih will unleash the full potential of your router, not only unlocking full QoS features but many advanced features only found in high end Cisco routers.
Some open source router firmware projects include: