Il programma funziona correttamente, l'IO C++ è bufferizzato, per cui il buffer di scrittura viene svuotato sulla console solo quando è pieno, quando viene chiesto dell'input su cin e quando viene forzato manualmente il flush. Nel tuo codice nessuna di queste condizioni si verifica, per cui tutto l'output avviene alla fine.
Per risolvere, inserisci un cout.flush() prima del ciclo.
In ogni caso, i cicli for per le pause non si usano sui PC normali, perché non bloccano per un tempo determinato e sprecano un sacco di CPU. Usa piuttosto le syscall POSIX sleep o usleep.