Na pewno trzeba użyć samego HTMLa i do tego JS (lub JQuery). AJAX jest tutaj raczej zbędny bo pozwala on na pobranie danych z jakiegoś innego pliku/skryptu (np. można wywołać jakiś plik PHP wykonać jakieś czynności i zwrócić wynik). Z tego co zrozumiałem nic jest Ci coś takiego potrzebne więc AJAX nie będzie potrzebny.
Co do samego sposobu jak to zrobić to ja zrobiłbym to przy użyciu setInterval. Pozwala to wykonywać daną funkcję co pewien czas:
setInterval(wykonajTaFunkcje(), 1000);
Czas tutaj podajemy w milisekundach (1 sekudna = 1000 milisekund). W tej funkcji musi być coś co będzie obliczało (przeliczało na ilość procentów) i graficznie obrazowało jaki jest już postęp. Może to być po prostu zwykł div ze zmienianą szerokością, można skorzystać z JQuery, które oferuje taki typowy gotowy progressbar: http://jqueryui.com/progressbar/ albo wymyślić jeszcze co innego (z resztą mówisz że już coś masz).
A no i pozostaje jeszcze sprawdzać czy czasem nie minął już cały określony czas - proponuję najpierw ustawić jakąś zmienną z wartością 0 i przy każdym wywołaniu funkcji zwiększać jej wartość. Warunkiem też przy każdym wywołaniu tejże funkcji należy sprawdzić czy wartość zmiennej nie jest większa niż 30 no i jeśli jest znaczy że odliczanie zostalo zakończone. Z odświeżaniem całej strony nie ma żadnego problemu to jest po prostu:
location.reload();
O możliwości odświerzenia jednego diva nie słyszałem... trzeba by podstawić od nowa kod przez JavaScript przy użyciu innerHTML (lub innych metod JQuery) i wtedy mógłby on tak jakby wrócić do stanu początkowego.
Mam nadzieję że zrozumiale wyjaśniłem mój pomysł jakby coś to pytaj :)