Microsoft introduced a feature called Timeout Detection and Recovery (TDR) since Windows Vista. Basically it is a timer that counts how many seconds the video card has stopped responding to the OS (2 seconds by default) and it assumes the video card or driver
has crashed. It restarts the video subsystem in an attempt to prevent a crash. Why this happens is anyone's guess. Maybe some system files related to video get corrupted, or the video drivers are poorly written, or the video card has a hardware fault. It could
also be a program that drops the frame-rate too low, like a high-end (or buggy) game. Either way it's Windows reacting to a problem.
The following is a way to extend the time Windows waits before it restarts the video. It doesn't "fix" the original issue, but it should prevent most, if not all, of the TDR's from happening. It's like disabling airbags in a car because they keep randomly deploying-
it's not really a fix, but at least you can drive again :)
Note: If you are not familiar with editing the registry, I wouldn't recommend changing the TDR. It involves creating new keys and values, which have to be exactly the same as the instructions, even the capitalization.
- Click Start, Run, and type "regedit"
- Navigate to: HKey Local Machine\System\CurrentControlSet\Control\
- Locate the "GraphicsDrivers" key, and right-click on it.
- Click "New" and "DWORD Value" (it will say 32-bit if you are on a Windows 64-bit)
- Label the new value "TdrDelay"
- Double click on TdrDelay, and enter the number of seconds you want Windows to wait before timing out. The default is two seconds, so start out with 6, and you can make it a few seconds longer if it doesn't fix the issue.
- Close the registry editor and reboot the computer.

This applies to any video card, Nvidia, ATI, or other.
More info here:
http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx
(they say Vista but it also works with Windows 7 32/64)
and a forum post here:
http://forums.amd.com/devforum/messageview.cfm?catid=328&threadid=100142