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 
|Optimize (opensource)||gcodemillopt||gcodemillopt is Open-Source software which will optimize gcode produced by software like MakerCAM. It does this by arranging gcode so that cutting operations are ordered to minimize the distance between cuts. When used with the -laser option it will convert G1 Z and G0 Z codes to M3 and M5 codes to turn on and off a laser instead of moving the Z axis. Written in open source C++ it should compile on most platforms. A 32-bit Windows binary is available in github along with the source code. If renamed to gcodelaseropt the -laser flag is enabled automatically.|
|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||CNC Simulator||Windows program to simulate and test G-code before sending to the machine. Requires fairly recent version of dot.net.|
|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.|
|Optimize||PCB G-code Optimizer||Optimizes G-code for milling PCB. Maybe can be used also for optimizing other G-codes.|
|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.|
|Previewer for Windows Explorer||NcThumbnail||Shows a thumbnail (small picture) plot of all your CNC programs in Windows explorer. Freewere.
|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."