1. Forgot to set DisableBugCheck in registry. Usually tells that driver stop responding after 30 seconds.
2. Overclock the GPU memory, especially 4850 which is very sensitive to memory overclock. I'm having driver crashed.
3. Do something wrong in your code e.g. index out of bounds, more aggresive fault behaviour will happen in scatter kernel like screen freeze.
4. You allocate too much memory, do some math to calculate the space required first. I'm having "application stop responding" when allocate 1gigs on 512megs card.
On your problem, I think you should try to calculate your memory first. Freeing up some when allocate new space for another problem is good way too.
For your first problem, especially if you run under Vista, it's windows watchdog timer.
In Vista if videodriver will not respond more than 2 seconds OS kernel will restart it.
So, if display attached to GPU and Vista's desctop expanded on this display, you will limited by 2 seconds of kernel call size. AFAIK this limit doesn't apply to GPUs not attached to display (secondary GPU/Tesla (for nVidia's cards)).
This threshold can be changed via registry according MS article, but actually I observed such driver restarts even with "disabled" watchdog via registry.