How can I make sharp geometric 3d models look more realistic?
For one, you can bevel your objects.

Forgetting to bevel or chamfer edges is one of the most common errors
committed by beginning 3D artists. There are almost no razor sharp
edges in nature, and even most man-made objects have a slight
roundness where two opposing surfaces meet. Beveling helps bring out
detail, and really sells the realism of your model by allowing edges
to properly catch highlights from your lighting solution.

In object mode you can bevel an object by using the Bevel modifier and in edit mode you can bevel edges and faces with Ctrl+B and vertices with Ctrl+Shift+B. The latter will allow you to interactively adjust the amount of segments with the mouse wheel.
Using the modifier.
Take a sharp object you just made, say a simple step. It's plain, simple and ugly when you look at it and would look out of place in almost any scene aiming for realism.

Once beveled, the edges are softened and it just looks more appealing as this is what we are used to in real life. This can be a very subtle effect or an exaggerated one as essentially it just helps to catch light and help show off the shape and detail of the object better.
(It can be a bit hard to see in the viewport at times with the default lights but makes all the difference when rendering with proper lamps)
Here is the bevel modifier with some optimal settings, increasing the value in the Segments slider will make the edge geometry start to approach what is more commonly called a Fillet, effectively rounding your edges. Do be warned however, as adding extra segments creates additional geometry.

Here is another look at how beveling effectively softens your edges.

Some advantages of beveling over other methods are:

It's cheaper than subsurface, meaning it renders faster and weighs down your scene less.
For hardsurface models, it softens or adds realism to your edges easily and effectively.
It's faster to do and gives you more control when compared to other methods such as using creases and or subsurf with edgeloops.


At the time of writing, this is now easier than ever. Cycles will have a Bevel Shader.
Example from Mike Pan on twitter.

Resource links

Example renders https://developer.blender.org/D2803#65805
Discussion thread https://blenderartists.org/forum/showthread.php?436279-V-ray-got-rounded-hard-edge-shader&amp;p=3230688#post3230688
More discussion and examples http://polycount.com/discussion/comment/2570081/#Comment_2570081