Honestly, Facebook's load time is quite phenomenal. It is one of the most feature-laden and complex consumer web applications out there and they still manage to set the bar with regards to speed and multi-platform usability.
Sadly Facebook's tools for other sites are some of the slowest things on the web. That they're attached to every post and so can be called 10+ times per page really doesn't help.
Scrolling on TechCrunch with your mouse over the post area is a hilariously pitiful experience.
Actually, since I blocked all Facebook widgets (tracking or otherwise), it has the nice side effect of not loading the comments when I accidentally land on a TechCrunch article.
HipHop affects server-side performance, but the fast loading is down to some very clever usage of JavaScript.
I can't find a write-up about it now, but last time I dug in to it they were pulling a really clever trick where their pages were served with a very light chunk of HTML (just enough to layout the page) followed by a sequence of script blocks that populated different areas. The magic is that the script blocks came back in the order in which the relevant back-end services replied - so if the timeline service replied instantly, the timeline would be rendered first - then as other services (notifications, app list, etc) finished new script blocks would be written out in to the HTTP stream already open to the browser and that content would appear.
This works amazingly well across all browsers, because the original browsers from the 1990s were designed with modems in mind and had to progressively render the page as it loaded. It turns out you can use that ability to serve a stream of script blocks to a page and dramatically reduce time-to-content-visibility.