Lo que pasa es que estas agregando el session_start() después de una salida (lease texto), session_start() tiene que ir al comienzo del archivo forzosamente, después del "<?php", antes de eso no tiene que tener nada, ni si quiera un salto de linea o espacios en blanco, incluyendo cualquier "echo, print, var_dump" o cualquier código html
Para que se entienda mejor, session_start() tiene que estar en la linea 2 de tu archivo, y obvio, la linea 1 es "<?php"
Fíjate bien en el código que te deje, ese código funciona bien y sin errores =)
Por ultimo, te dejo algunos ejemplos de lo que te comento
Código PHP:
Ver original<?php
//Esto esta mal porque estas haciendo un echo antes del session_start() por lo cual te mandara error
echo 'Hola';
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
<?php
//Aquí, igual que el anterior estas imprimiendo algo antes del session_start(), por lo cual, también te mandara error
$mivar = 'hola';
?>
<p><?php echo $mivar; ?></p>
<?php
?>
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
<?php
//Para que no te mande error tienes que poner el session_start() antes que todo
$mivar = 'hola';
echo '<p>'.$mivar.'</p>';
//Aquí no te mandara ningun error, porque estas definiendo session_start() antes que todo lo demas o que es lo mismo, antes de cualquier salida