una progress bar di cosa?

un upload ? puoi sapere bytes inviati e totale, punto
un download ? puoi sapere bytes ricevuti e totale, punto

entrambi i casi sfruttano unplugin proprietario, chiamnato Flash.

Se invece parli di stato del download non lo fa prototype ma l'oggetto XMLHttpRequest che a readyState 3, con tutti i browsers tranne Internet Explorer, ti permette di leggere gli headers inviati dalla pagina server e se c'è anche il Content-Length ti permette di leggere quanti caratteri hai ricevuto (xhr.responseText.length) sul totale (xhr.getResponseHeader("Content-Length")) e ricavare una percentuale o una progress bar.

due anni fa, fatto da me e senza prototype ... ma da qui a dire che vuoi leggere il ciclo while di una pagina server c'è molta differenza