A common practice is to have the 20 data entry fields as global fields, then have a 'Commit Record' button as you suggest. The script on that button checks anything about the 20 fields you want to verify, then creates a new record and slots the global data into the 'real' fields.
Nothing wrong with Surbsbuster's solution. There is an alternative you can also do that requires less scripting but it relies on a rather odd layout design trick to make it work.
In layout setup... you can clear a check box to disable "auot save". With this box cleared FileMaker will ask permission before saving changes to a record. If you then place an empty web viewer layout object on your layout so that the body is fully covered by it, then place your fields and other layout objects on top of this viewer, it will intercept any mouse clicks on the layout back ground to keep them from triggering the dialog that asks if the user wants to save the record. This web viewer object can be made invisible by selecting transparent patterns or zero width borders. With this layout design, you can add a pair of buttons, one to commit the record and one to use revert record to discard the data entry.
Thanks guys - ill try both and let you know what I find works best for me.
Both of these worked, but I just found for what I was doing that having the global fields made things a bit easier. Thanks for both the suggestions though.