I currently use a FFF printer with ABS primarily. My options for post processing and achieving an excellent finish include:
Sanding. Starting at 400 Grit and increasing grit fineness up to 1200 I am able acheive a smooth finish with no evidence of layer lines. I print anywhere from 100 to 200 microns.
Acetone wash. Using a felt tip pen filled with acetone I am able to apply a very thin varnish of acetone and then wipe away with a damp cloth immediately to get a smooth glassy finish.
Bead Blasting. With a blasting cabinet I use either PP or Glass substrate and bead blast my models to achieve a uniform finish and hide layer lines.
Painting parts with a high build primer also helps to hide surface imperfections. Finishing with my choice of Acrylic Lacquer or Enamel give parts a look that you would never tell has been 3D printed.