It all depends on the complexity of the scenes, the type of GPU, the speed and number of cores of the CPU, the amount/speed of memory available on your system, and how fast you need your final product.
A few considerations:
Sometimes rendering on GPU can be faster, but the amount of memory available for rendering is limited to that built into the card.
The easiest way to render faster in Cycles, is adding additional GPUs to a single computer. That way you can render more than one tile at the same time: Cycles will render as many tiles as there are GPUs. Two CPUs will render a single frame in almost half the time as a single GPU. 4 GPUs will cut render time to almost a quarter...
You can add as many GPUs as you can physically fit or connect to your computer and blender can use them all (It's more efficient if all of them are the same kind)
There are some solutions out there to use other computer's GPUs see: http://www.renegatt.com/blog/?p=130
But memory usage will still be an issue, as the memory available for rendering with multiple GPUs is not the sum of the memory on all of the cards, but is limited to the amount of memory on the smallest card on the system.
There are scenes that can only be rendered on CPU:
Complicated scenes with large textures, or operations that require more memory than that available on the GPU.
Scenes with features that are not supported for GPU rendering or are in experimental stages.
Even when rendering on GPU, there are still some operations that require processing by the CPU (Simulations, Physics, Particles, etc).
When rendering on CPU only, cycles will render as many tiles as there are processors or cores on your system. The more cores the system has available the more tiles can be rendered simultaneously. A single GPU will only render one.
You can render much larger/complex scenes in CPU because you can use all of the memory available on your system, and should you need more, then the Operating System will virtualize memory using the hard drive.
A render farm has the advantage of splitting render load across several computers and does not require a large investment on your part and you only pay when you are using it.
When you need to deliver on a fast turnaround there is no substitute to a render farm where you can have dozens or hundreds of computers at your disposal...
If it takes you 10 minutes to render one frame on your computer. It will take you over 33 hours to render an animation of 200 frames. Using 200 computers on a farm you can render the whole thing in 10 minutes...
Also when shopping for GPUs keep in mind that not all of them are created equal.
Currently Blender is more compatible with Nvidia graphics cards, but they are pricier than other brands.
Oftentimes the specs for GPUs are misleading so search online for benchmarks specific to blender performance before purchasing. Some very expensive "professional" graphics cards do not make blender any better than "gamer" oriented ones.
I'ts sometimes better/cheaper/more efficient to buy a couple of mid-performance cards than a single "high end" one.
Adding more GPUs to a computer requires a more powerful power supply and efficient cooling for the whole system.
If you are investing in many computers make sure that the power/electric installation is adequate...
Before you buy into one solution or another other, I suggest that you make some tests and see what solution works best for your workflow or specific project.