We've had some nasty time sync problems on our Windows Server 2008 R2 servers lately.
I traced this back to something very simple: the Windows Time Service was not started! The time can't possibly sync via NTP when the time service isn't running...
The Windows Time Service was set to start "automatically" in the services control panel, which I double and triple checked. I also checked the event logs and I didn't see any service failures or anything like that. In fact, it looked a heck of a lot like the Windows Time Service never started up automatically after the weekly Windows Updates were installed and the servers were rebooted. (this is set to happen every Saturday at 7 PM.)
The minute I started the Time Service, the time synced fine.
So, then, the question: why would a service set to start "Automatically" ... not be started automatically? That seems sort of crazy to me.