So...not sure if you consider this cheating, but here's my method:
I use a projector to project the image onto my canvas and then use a pencil to trace the necessary shape:
You now have 2 choices: You can project the photo directly on the canvas and trace and shade to match the photo. This has mixed results. I find that the shading is always off when I use this method. Or you can edit the photo to separate shading levels:
The shaded image you have now drawn onto the canvas should look pretty good. Now you just need to paint on-top of it. Since the pencil graphite can sometimes blend into the paint and discolor it, you might need to spray a light fixative on top or a clear coat. Depends on your painting style and thickness of paint you apply.
With this method, you should generally work the levels from dark to light. To get rid of the "contour map effect" just blend the boundaries of the shaded areas well. So apply paint to the dark areas first. Then paint the next area down and blend, repeat until all levels are completed. You can then finish the painting by comparing to the original photograph and adding touches of highlights as necessary (but I don't recommend adding additional shading.) Your end result should be pretty good.
A few additional tips:
A. A cheap projector typically works fine. You can use a nice digital projector or a cheap overhead projector and print on transparency paper.
B. Try to project onto the canvas dead-on. Meaning the projector is at level with the canvas. The reason is that the canvas has some "give" and the angle of the projection gets messed up. Meaning that when you apply the pencil, the image you draw will be a centimeter or 2 from where it belongs. Small digital projectors typically shoot upwards at an angle and the distortion is fixed using the keystone setting. To get it dead-on you might need to tilt the projector by stacking a book or two under the back of it.
C. If you know Photoshop, you can edit-in the background of your choice. An interesting portrait has an interesting background. Compare to the Mona Lisa's background.