Blender won't render the image when set to GPU compute
The rendering window shows that your scene is more than 2.5GB big. Together with other applications and Windows this can even fill a 3GB graphics card. Your graphics card probably just can't provide enough memory for CUDA.
If Cycles can not get enough memory, it will not render. If you are rendering on the CPU, Cycles can use the system memory which is usually much larger. This is why you can still render in CPU mode.

To reduce the memory needed to represent a scene there are a few tricks:


Using instances: When you duplicate objects that will have the same geometry, do so by pressing Alt+D instead of Shift+D. This will duplicate a mesh as an instance: The mesh data only exists once, it is just used with another transformation. If you look at the mesh data of your object you will see that it has multiple users now:

You can also set the mesh data an object uses by clicking on the icon with the three vertices and selecting the mesh you object should use. Setting all objects to the same mesh will have the same effect as if they were copied by pressing Alt+D.



Reduce texture size: While this is not the most beautiful option, it will save much memory. Textures are quite big if they are unpacked in memory. They are not compressed like .jpeg or .png anymore. Look for objects that are small or off in the distance. Large textures are typically not visible there anyways.
Use procedual textures: Some image textures can be replaced by procedual textures, especially random noise bump maps and such. While creating procedual textures requires some extra computations, they do not need much memory since their data is only calculated when needed.



In general it is also good to have a look at the console. It usualy contains more detailed error messages. If your console is not shown, click the 'Window' menu on the top of the Blender window and select 'Toggle System Console'.