No sé que criterio sigue hotmail exactamente para identificar un correo como spam. Yo tengo dos cuentas de correo en hotmail con la misma configuración y a veces una los recibe como spam y la otra no y viceversa. No sé donde lei que si pones en la cabecera que el X-Mailer es Outlook Express evitas que ocurra esto pero no lo he probado.
Edito porque he encontrado en este mismo foro la sintaxis para la cabecera
$cabecera.= "X-Mailer: Microsoft Outlook Express 6.00.2600.0000";
Ya nos contarás si te va mejor