Possible reasons for really long database recovery
If this is a PRODUCTION environment, definitely DO NOT CANCEL recovery.  This will only prolong your pain.  DO NOT RESTART SQL SERVER.


Wait until recovery is finished, no matter how long it takes.  
Ensure you have a good backup.
Reduce the Virtual Log File count on databases that have an unreasonably high number of them.
Set autogrowth on the database to a reasonable number, NOT 10MB or 10%!  If your log file is currently 50GB or larger, for instance, you might want to consider a growth size of 4GB or 8GB.
Use this script, or some variation thereof, to monitor VLF counts on your databases, and pro-actively manage them so you don't have this problem in future.


This answer has many great points about VLF performance.

Kimberly Tripp has an excellent article about how to get better transaction throughput.

MSDN has a blog post about slow database recovery from high VLF counts.  The article is targeted at SAP users, but the information applies equally well to all SQL Server installations.

Linchi Shea has some good points over at sqlblog.com

If this is some non-production environment, then all bets are off.  You can kill that sucker as much as you like to find out the cause/solution.