The vast majority of wires on a typical board are connected only to extra-low-voltage power and digital signals -- neighboring traces no more than 30 V apart.
For those components I have only 2 rules for the space between components:
space equal to height: I try to place components far enough apart so that I can inspect where the pins touch the board at a 45 degree angle. I.e., if I have a 0.5 inch tall component, the closest component is at least 0.5 inch away, so I can peek over the top of the tall component and inspect the side of that other component. (This also helps the fingers of robotic assembly equipment install some tiny SMT component, even if the robot was dumb enough to install tall components all around it first).
leave space for the PCB traces: with small SMT components, it's really easy to pack the parts together so closely that it's simply impossible to wire them all up with PCB traces, even at 0.006 inch (0.15 mm) minimum trace/space widths. When that happens, you're forced to push the components further apart to leave more room for traces between them.
I snap pin 1 of every though-hole part to a 0.1 inch grid -- i.e., pin 1 is some integer multiple of 0.1 inch away from the 0,0 reference point on this board. This makes it much easier to make a prototype -- and later, a test jig -- out of 0.1 inch grid prototyping board.
I snap the "reference point" (usually the centroid) of every surface-mount component to some grid -- perhaps starting out with a relatively coarse 0.05 inch grid (exactly 1.27 mm), but often switching to a finer grid. "PCB Design Tutorial" by David L. Jones and "PWB design flow layout" at the Massmind have a few tips.
Sometimes it's easier to leave twice as much room between components as your first estimate expects you'll need for the wires, just so you get something that's possible to route, and then afterward pack everything together once -- rather than needing to slightly nudge a quarter of the chips on the board a few dozen times while trying to push through a few hundred wires, getting some really long and winding routes when the "obvious" path is clogged.
Space equal to half the height exception: Since I can look "around" tall through-hole cylinder capacitors, I often leave a space only half their height around them (30 degree angle), hoping that the robot is smart enough to install them last.
Zero space exception: some connectors are designed to make a row of connectors each one practically touching the next -- a row of screw terminal connectors, a row of 3-pin hobby servomotor connectors, etc. So I lie to my CAD DRC and claim the whole row is one huge component.
If you have sensitive analog signals or high-voltage power or high-voltage signal traces, you'll want a little more space -- Wikibooks: Practical Electronics has a few tips.