Technically as long as the server sends info to the browser every 30 seconds or so, the script shouldn't timeout.
Then again, technically you're limited by how long a PHP file can execute 😉 If it's set to like 30 seconds, then it will timeout. There are ways to get around that (I believe) but I'm not exactly sure how, and I'd rather not have my computer die on me.... again today.
As long as the server hasn't sent the "200 OK" response to the browser, Firebug should still show as loading because technically the page is still executing. But if you do send the "200 OK" response, I'm pretty sure you'd have to use JS to display that output because the document is "finished" once it gets the "OK" response.
AJAX would be the proper way to go here. I can't see doing it through straight PHP.
Oh!! And yes, Firebug will still show it as loading because Firebug watches all NET calls performed by the page and times them. It's a nifty extension to FF that all web devs should have.