Perchè la echo non invia immediatamente il risultato al browser, ma lo mette in un buffer che poi viene inviato tutto insieme
Se vuoi "svuotare" il buffer e inviarlo al browser, mentre il resto dell'elaborazione continua devi usare la funzione flush()

http://it2.php.net/manual/it/function.flush.php