Quieres evitarte problemas de sesiones? Entonces debes cambiar esto:
Por esto:
No importa si unas veces funciona y otras no, porque session_start(); necesita crear/consultar una cookie para identificar al usuario y no podrá hacerlo si envías cualquier otra cosa al navegador.
Resulta que los navegadores son muy tercos e insisten en procesar la información recibida en determinado orden:
1- Encabezados: Para redireccionar, crear cookies, identificar contenido (HTML, descarga de archivos, etc.)
2- Contenido: Ya sea código HTML o contenido de archivo a descargar.