There's a lot of complaints about the performance of the Blender 3D Viewport, but there are some things that can be done about it that people might not be aware about. I've thus decided to start this thread so we can collect information on this matter.
EDIT: The Display Tools Addon helps working around many of the issues mentioned below.
1. Enabling VBOs
In old OpenGL, you would make a function call for every face you would want to draw, whereas in modern OpenGL you upload all the geometry as buffers and draw the whole thing in a single call. This is a huge improvement for dense meshes. All modern GPUs support Vertex Buffer Objects (or at least Vertex Arrays) but for some reason, blender does not enable VBOs by default. Make sure to always have it enabled, you can find the setting under Preferences->System->OpenGL.
2. Don't have a Subdivision Surface or Multires Modifier at the bottom of your Modifier Stack
In current Blender (2.63) if there is a SubD/Multires modifier at the bottom, a different code path will be entered for drawing in Object Mode, which doesn't use the aforementioned VBOs. This is likely something that will be fixed in the future, but for now you can work around this by putting a dummy "Simple Deform" (with 0 influence) below it.
3. Drawing of Outlines is very expensive
If you have outlines enabled, selected meshes will basically have to be drawn twice, roughly halving performance. For some people it may be an option to disable "outline selected" in the N menu and instead use the Outliner for selection. I've found this to be useful in dense scenes, since selection through viewport will be slow in that case anyway.
4. non-GLSL Textured modes are slow
Consider using GLSL mode (N menu->Display->Shading) instead of Multitexture/Singletexture mode, it is roughly twice as fast. You will however have to setup materials if you want to do UV mapping that way. Also: Using the "Textured Solid" option causes the same performance hit.
5. (NVIDIA Geforce users only) Disable Double-Sided shading
I've outlined this issue in another thread. This issue is pretty much single-handedly responsible for the bad reputation that newer NVIDIA GPUs have on this forum. Disabling Double-Sided shading on all your objects will make a huge difference and I hope in the future it will be accounted for with some global setting.
EDIT: As of Blender 2.7, new objects are added with the "Double-Sided" shading already turned off.
6. Non-Power-Of-Two Textures are slow for Texture Painting (by Sanctuary)
Consider painting only on textures that have power-of-two dimensions. The usable powers-of-two on my gpu (Geforce GTX 460) are:
Good: 1024x1024, 512x2048, 4096x128
Bad: 1000x1000, 500x2000, 4000x100
7. Sculpting on lowres meshes can hurt performance
In some cases it can improve the sculpting brush performance to apply the lowest step of the multires modifier when sculpting on a lowres mesh. Further Explanation/Discussion here.
8. GUI regions can slow down the viewport (by McBuff)
Certain GUI regions may be slow to redraw if there are a lot elements to be drawn, likely candidates for this are the Outliner (too many objects in the scene) and the Graph Editor (too many lines to draw). Separating the affected regions into their own window ensures that such regions will not slow down the entire viewport.
9. Enabling "Show Diffuse Color" can hurt performance (by Zunova)
This setting can be found in the Toolbar under Options during Sculpting. It is not enabled by default.