Note that some Communication / Control programs have previewing functionality built in.
Of especial note is https://github.com/grbl/grbl-sim which allows one to validate that Grbl will run a given G-code file.
In a class by itself is Forum user GrblGru's full 3 dimensional virtual machine simulation in software: GrblGru = Free 3D-Simulation for ShapeOko2 which provides a way to visually simulate a workflow from end-to-end w/o the need to have a physical machine. Please note that that link takes one to the first page of the discussion. There is additional information (and newer versions) in later posts. This has since expanded to include CAM functionality. https://www.grblgru.com/
|Verify (opensource)||CAMotics (previously named OpenSCAM)||CAMotics is an Open-Source software which can simulate 3-axis NC machining. It is a fast, flexible and user friendly simulation software for the DIY and Open-Source community. Works on Linux, Mac OS X and Windows.
Includes Tool Path Language --- http://tplang.org
Carbide 3D tools at: https://github.com/WillAdams/Design_Into_3D/blob/master/Carbide3D_CAMotics_tools.json 
|Preview (opensource)||pygcodeviewer||Python based simple G code viewer.|
|Preview (opensource)||yagv||Yet Another Gcode Viewer
Fast 3D Gcode Viewer for Reprap-style 3D printers, in Python and OpenGL (via pyglet).
|Verify (opensource)||Pleasant3D||Mac OS X 10.6 or later previewer for STL and G-Code files.|
|Verify (opensource)||Repetier-Host||Intended for 3D printers, some users have found it useful as a previewer.|
|Verify (opensource)||CNC Simulator (Sourceforge)||CNC lathe machine simulator. Simulates the path the tool of a CNC lathe takes for a given program. The simulation is two-dimensional, with provision for final view in 3D using OpenGL.|
|Verify||CNC Viewer||Fast gcode parsing using Regular Expressions, Multiple viewports, Dynamic View manipulation, Selection, Tool number filter, Printing.|
|Verify / Edit (Free)||NC Corrector||Verify tool path and view and edit G-code. A bit sluggish on older machines.|
|Previewer||Online GCode Viewer||Source at gCodeVisualizer.|
|Previewer (online HTML5)||SnapFracturePop’s Laser GCode converter||Announced in GCode preview.|
|Previewer (online WebGL)||Buildlog.net gviewalternate link||Requires newest Chrome or FireFox. Tutorial on using it from the MakerCAM site here: gview tutorial.|
|Previewer (opensource)||Universal Gcode Sender||Cross platform gcode viewer, preprocessor and sender.|
|Previewer (opensource)||gcode.ws GCode Analyzer/Visualizer (online)||Browser-based visual GCode visualizer, viewer and analyzer.|
|Previewer (opensource)||ChiliPeppr Hardware Fiddle||Browser-based visual GCode visualizer, viewer, analyzer and sender.|
|Web Previewer (opensource)||G-Code Q'n'dirty toolpath simulator||Online previewer, w/ code on github. Notable for having a good time estimator.|
Additional programs to consider:
https://ncviewer.com/ --- online (HTML5 / WebGL) gcode previewer
https://github.com/arpruss/miscellaneous-scad/blob/master/scripts/gcode2scad.py --- "generates an OpenSCAD file which simulates the cut with an adjustable bit shape."