When restoring a sql server prior to 2005, the restore first creates the file and writes 0 onto it, just to be on the safe side.
during that phase, there's no progress report.
if nothing else should be working on the system, you could monitor the sqlsrvr.exe process and see how much IO it writes. it corresponds roughly to the size of the database.
it is important to monitor it, as the restore may hang indefinitely without any notifications.
I have seen restores onto existing database taking much shorter time, so you could first create an empty database with files sized like (or bigger) than the size of files in the restore, and then do a restore with replace.
even though the total amount of time you'll have to wait is the same or longer, it helps dividing the process into two separate actions.