Esiste una funzione sleep() http://php.net/sleep ma non credo sia quello che serve a te.
Per mettere "in attesa" un utente rispetto a una funzionalità (come un download) devi impostare un timestamp (per esempio su db) e poi controllare che sia passato il tempo necessario (per esempio 30 secondi).
Se poi vuoi implementare una cosa carina lato client (il conto alla rovescia), devi fare un po' di javascript (e forse anche un po' di ajax)