si, intendo gli echo e qualunque altro tipo di contenuto html.
Gli header sono ciò che il server manda prima ancora del contenuto della pagina. Nel momento in cui hai mandato al browser anche un solo tag o carattere è già troppo tardi per inviare altri header o sovrascrivere quelli esistenti.
Non credo che ci siano altre soluzioni per mandare in stream un file, se riscontri questo problema probabilmente stai sbagliando l'approccio con il mvc di joomla.