For those of you experiencing this issue. Here is the solution I found that worked for me:

Any application can set a pending reboot flag in the operating system through a registry key.  Sometimes a reboot does not clear the flag.  This is what setup is detecting.

To work around the pending reboot issue:

1. Open Regedit
2. Find the key “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager”
3. Rename the “PendingFileRenameOperations” value to “PendingFileRenameOperations2”

Source: http://social.msdn.microsoft.com/forums/en-US/sqlsetupandupgrade/thread/787c7a6b-dff1-4ceb-b5ea-73bc3fb99b3c/