Um pequeno resumo da documentação da extensão YSlow para o Firefox, encontrado em inglês em: Best Practices for Speeding Up Your Web Site
Obs.: O original é bem mais detalhado e com muito mais informações, aqui trago apenas o que achei mais interessante ou importante.
80% do tempo gasto pelo visitante para baixar uma página é gasto no front-end (cliente) e somente 20 no back-end (servidor).
Reduzindo o número de componentes do site reduzirá as requisições HTTP para renderizar a página no cliente. Esta é a chave de páginas rápidas.
Usar CSS sprites reduz o número de requisições de imagens, ao invés de requisitar várias requisita-se somente uma e o CSS mapeia usando o background-image e background-position. Exemplo em: RibaFS - Sprites em CSS
Já os scripts em JavaScript devem ser movidos para o final da página, para que a carga seja otimizada. É verdade que em algumas situações não dá para mover para o final da página, mas sempre que possível devemos fazê-lo.