Gracias a Mark B (ver comentarios) descubrí que el navegador era la causa. Más exactamente complemento firePHP en Chrome. Después de desactivarlo, todo volvió a la normalidad.
Por alguna razón, firePHP hace que el navegador llame a la página dos veces cuando no se hace ningún eco.