In my opinion testing for a Unique instance should be in the project.lpr file and before application.initialize and application.run are called.
In that case, though, you should not use showmessage, which relies on the LCL, but a native OS messagebox or not at all.
This pattern gives you the least amount of overhead.
Bail out as early as you can....