Background: Satoshi mostly implemented a 'headers only for initial block download' mode. See the fClient flag in the source, and the headersonly github branch.
The goal is to make newbie bitcoin users startup experience better-- it is painful to wait a day for the block-chain to download and verify.
The observation is that if you have an empty wallet and you aren't solo mining, you don't care about past transactions, you just need the best block chain. So bitcoin can just fetch block headers until it catches up with the current block, and then download and verify full blocks after that (once it shows the user a bitcoin receiving address, they might get transactions to it, so bitcoin has to fetch full blocks after the first time it starts up).
As I finish the implementation, I'll keep this gist up-to-date with issues or re-thinks.