Alex,
No, checking if the item exists before trying to create it is the correct solution. I thought that ad_form was able to detect if a user clicked submit twice and process it accordingly. Apparently it is possible to use the back button and submit again and process the _new_data block again.
Hoepfully Don will read this and give us some advice!