For new record, a solution would be to have a status field as to if the change was accepted. Then you would set up a Notification and a safety net subscription report of Open New product requests. These type of records would need to be filtered off most users' reports and drop down lists.
The Edit issue is interesting. One idea is to make a duplicate set of fields beside the real fields, and have the users fill out the duplicate column for any changes. Then the Approver can see the old and new value.
The Approver could then push a URL formula button to copy the new fields to the real fields if they were to be accepted. Or alternatively change the status to rejected.