simple: session_start устанавливает ваш cookie-файл сессии php, а cookie-файлы могут быть установлены только в заголовке http.php должен отправить заголовок, прежде чем он сможет начать отправку контента.поэтому, как только вы начинаете выводить содержимое, php неявно отправляет заголовок http и, таким образом, отключает изменение значений заголовка.
общий способ предотвратить это - использовать буферизацию вывода - см. http://php.net/manual/de/ref.outcontrol.php