This is a tricky task, I'm not sure that it can be done with the form open.
My gut would be to copy the data from the SOP10100 and SOP10200 into a staging table, like you said. However, when you close the form, Dynamics will save the form data to the SOP tables. So, if you want to 'discard', you have to copy the the staged data to the form, not the underlying tables. That way the form will save the staged data back.
Another however, and a big one: There is no way to restore the grid (scrolling window). If it started with two lines, you changed one and deleted one and added one, there is no way to get back to that state on the form, the tools are not available. Microsoft is hinting that it may be available in 10, we'll see.
So, here's what I'd do:
Copy the data to staging tables. Put a button the form that says 'Discard Changes'. Have the form close (by pushing the 'save' button in code) and then restoring the data in the tables via SQL statements.
This is the code that I use to close the SOP Entry form:
'save the current form. The form will go blank
sopWind = Dynamics.Forms.SopEntry.SopEntry
If sopWind.SopNumber.Value > "" Then
sopWind.SaveButton.RunValidate()
End If
HTH