The reason for no output until the script terminates/faults is due to buffering, probably either the web server you are on or the browser you are using. See the information at this link -
http://www.php.net/manual/en/function.flush.php
This buffering/flush is separate from the output buffering (ob_start/ob_end_flush) that PHP can do.
Basically, the output is not sent to the browser and/or displayed by the browser until the script completes (or faults.) The default maximum execution time for a PHP script is 30 seconds (which you should receive an error message for if you try the following code.)
Try the following code to see what is going on -