swr is on the right track. Windows browsers tend to buffer page content until the outermost container is completed. So, for instance, if you are putting the entire page into a table for formatting, nothing is displayed until the browser gets the last < /table> tag.
Even if you are not doing such a thing and sending just the raw text, some browser versions will still buffer the data since they will assume a < html> and < /html> container.
If you want to make sure the browser displays the info as you send it, put it inside a container such as:
print "<P>Message One...</P>\n";
flush;
print "<P>Message Two...</P>\n";
flush;
That should do the trick for you.