What about waking up between sleep cycles?
The Zeo is the most accurate (since it picks up brainwaves), however it's also slightly uncomfortable and buggy. I personally use the Jawbone UP which works good enough. All of the apps that say they do that aren't the most accurate since they rely on the movement of your mattress. However I know some people who swear by them.