How to achieve dimensional accuracy of printed parts When designing parts that should either fit with external objects or other printed parts, what measures can one take to ensure that the dimensions of the final print are accurate and fit the other object?

To my knowledge, you at least have two options to account for printer inaccuracy and shrinkage:


Adjust the space around joints in your CAD model
Adjust dimensional offsets in your slicer software


Are there any good workflows one can use to design and print 3D-models accurately without resorting to trial and error?
Unfortunately, different firmwares and different slicers require different calibration techniques! There's a lot of software-specific advice out there, like printing a single-wall calibration box and measuring the wall thickness. That's a good technique for Slic3r, but not for Simplify3D. It can be very confusing.

Here's the general outline of what you should do:


Rough calibration check for printer steps/mm. Do the values in your firmware settings make sense for your linear motion hardware? For example, you can calculate what the theoretical values SHOULD be based on belt pitch and pulley tooth count. Print something moderately big (~100-200mm) and check if it's +/-1-2%. If it's off by more than that, your steps/mm is probably wrong.
Check for mechanical backlash using a backlash-checking print like this one: http://www.thingiverse.com/thing:252490 Tighten belts and perform other printer-specific tuning required to eliminate backlash. Backlash will throw off other calibration steps, so make sure there's no slop!
Follow the recommended extrusion volume calibration steps for your slicer. This starts with measuring your filament diameter with calipers and inputting that into your slicer. And then you will usually either "print a single-walled box and measure the thickness" or "print a series of 100% infill calibration boxes and adjust the extrusion multiplier to the largest value that looks good without bulging." By measuring filament diameter and then adjusting an extrusion calibration setting in the slicer, you will be able to measure future filament and prints will come out right. Giving the slicer fake diameter values will force you to recalibrate every time the diameter changes. Note that you must redo this calibration for each FILAMENT MATERIAL and EXTRUDER DESIGN. Different material/extruder pairs will have different bite depths and effective drive diameter.
Precision calibration check by printing a variety of object sizes and PLOTTING "desired size" as X and "actual size" as Y. Then find a linear fit equation, y=mx+b. (Do this separately for your printer's X, Y, and Z axes.) The value "m" is your scale error. You can use your slicer object scaling to fix this. For example, ABS usually requires 100.3-101% scaling to account for shrinkage. If you have scale error with a low-shrinkage material like PLA, you can adjust your firmware's steps/mm value to compensate. The value "b" is your fixed width error. Assuming you don't have backlash, this is usually caused by the small amount that molten plastic bulges out to the sides, or by extrusion volume calibration error. You can improve this by fine-tuning your extrusion volume. Many slicers also have "horizontal/XY size compensation" settings that you can use to shrink/expand the part by b/2 to correct the fixed width error. Any residual fixed-width error that you cannot correct with slicer settings should be added as a tolerance in your part models. 


If you follow these steps, you should get +/-0.1mm or better dimensional precision on your prints.*

*Deltas not included. That's a whole other ball of wax.