I don't think it's a good idea trying this in Lisp. You're either going to run a loop hogging acad entirely or run it through reactors (which would only fire if something's changed in acad). And if you go the reactor route, then popping up an alert box is a way of trying to crash acad.
I'd advise rather doing something like this in an external program. If you really want such inside ACad then possibly use DotNet instead - at least there you'd have something like a wait function and be able to run it as a 2nd process - thus acad can keep going. Not to mention, your pop-up may then also be non-modal.