I created a three minute long Blender animation. This comes out to over 4000 frames at 24 frames per second. Per frame rendering was taking up to 90 seconds. This turns into about three days of rendering, even on a double NVidia Quaddro 4000. I wanted to see if I could improve the render times.
The first reference in the list is at Blender Guru - Four Easy Ways to Speed Up Cycles. His first listed method was to switch to GPU rendering. Yep, already selected that. And the latest Blender release, 2.70a, can use both of my GPUs. I see the two rendering tiles happening.
His second suggestion is to reduce the number of bounces. In his example, it looks like a high number of bounces are really useful for transparent objects, but less useful for solid objects. Looks like things could be toned down to 4 bounces or so, and still have a good render.
Changing tile size is the third optimization method. A setting of 256x240 (for 720p frame) appears to be helpful. That is for a GPU related render. It appears that smaller tile sizes work best for CPU based renders.
For high resolution renders, the number of samples needs to be high, but not excessively high. The law of diminishing returns comes into effect. For my render, I'm using 70 samples. The results are grainy, but very useful. Higher sample rates will increase render time.
In the comments section of the page, additional refinements are suggested: a) use a 'static bvh' viewport, b) save buffers, c) cache bvh, d) use spatial splits, e) persistent images, and f) progressive refine (other articles indicate that progressive refine is actually slower, I havn't tried it yet). [As a side note, the Adaptive Samples web site has many other useful Blender tips and techniques. Note, that on animation files with many frames, points b) and c) can eat a lot of disk space.
With a combination of these settings, I saw an improvement in render times from about 90 seconds down to 45 seconds, a 50% reduction in render time, and the images appeared to be of higher quality.
A subtle optimization of the tile size is mentioned at Adaptive Samples - Auto Tile Size Addon. The idea is to figure out what the tile size is for best renders based upon powers of two for x and y. Once determined, then modify the tile sizes for even distribution into the final render size. For example, if my tuned tile size is 256 x 256. My final render size is 720p (1280x720). So 1280/256=5. 720/256=2.8. So tile size would be 256x240. (256 goes evenly into 1280, but 3 is the closed integer which goes into 720 evenly).
As a side note, the blog Adaptive Samples has many additional Blender tips and techniques. One of which is some information about how to use the new Blender Volumetric lighting capabilities. Plus he has a series of Commonly Ignored Features.