The recovery works by looking for a file : /data/.recovery_mode
If it's there, then it goes into recovery mode, if not, then it allows for a normal boot.
However, if doing normal boot, it actually places the /data/.recovery_mode file and then erases it once the system is fully booted. I know this is confusing, but this is how it knows to go back into recovery if you did a battery pull (ie, the file was created, but never erased since you didn't complete the boot process).
All of this is supposed to happen automagically, but I've heard of that file sometimes getting 'stuck' and not deleted. Thus, causing you to reboot into recovery every time.
There is nothing inside the file, just an empty marker. You may want to delete that file and reboot. Should help.