Currently we ask cadidate to work on a small task on a computer with all necessory environment setup like visual studio etc. We found it very usefull to recruit good programmers. But the problem is we need to setup/clean computer for every candidate which we are finding very hard to manage.

Is there any good online pre-employemnt testing system to recruit programmers which may help us to reduce the number of candidates to be interviewed to a practical count ?

Google "pre-employment testing" and you can find good number of pre-employment testing providers like shl, brainbench etc. But NvnTest is most suited in your case as it provides environment to write SQL queries, C, C# programmers and test it. It appears to be better solution to recruit programmers.

with disk images and/or virtual machines, it should be a breeze.
Just make a vmware image, and for each candidate remove the used image and put a new one with the same name in its place.

Of course if you're inviting a thousand people over for the test your recruitment process is fundamentally flawed, as 990 of them should have been set aside before ever getting to that stage.