You'll need to test this as it's air code(pretty untested).
On each control that you want to duplicate set the Tag property to Duplicate
On your button to copy the previous record add the following code;
Code:
Dim ctrl As Control
'Loop through controls and get current values into defaults values
For Each ctrl In Me.Controls
If ctrl.Tag = "Duplicate" Then
ctrl.DefaultValue = "'" & ctrl.Value & "'"
End If
Next
DoCmd.GoToRecord , , acNewRec ' This should now populate the new record with the values from the existing record
I'm pretty sure this will fail on checkboxes, so don't include them.
Closing the form should reset the default values back to their original settings provided you don't save form changes.