I've read up on quite a number of testimonies on how their flashing of a custom ROM has gone. Some say you need to wait 10-20 minutes on the first boot. Often it's a mystery as to whether or not things are going right.
To take the mystery out of it, it's so useful to run ADB while the process is going. Hook up your phone via USB, open a command window in the platform-tools folder and run "adb logcat". You now get to watch the progress.
The first time my bootup was taking so long, I ran the logcat and started to see all kinds of problems:
*** FATAL EXCEPTION IN SYSTEM PROCESS: PowerManagerService
java.lang.NullPointerException (many of them)
SurfaceFlinger died, exiting...
... and many other failures. The clue was that these repeated in a loop. In the command window, you can select and capture the log and paste it in a text editor to read it.
My problem was solved by doing the following before applying the ROM again: wipe dalvik cache, wipe data/factory reset (wipe all user data), format boot, and format system. When I did this, my reboot took just a few minutes after the ROM image was applied.
So, using adb logcat is a very sensible way to do these ROM flashes. This way you really know what is going on, rather than waiting endlessly and trying to decide if you should pull your battery or not.