As several commenters noted, making the form blocking does not solve your problem as the user can still navigate to another website or close the browser, resulting in the situation you're trying to prevent.
The problem with creating a new object using a form is two-fold:
The first issue can be remedied by adding an attribute that indicates whether an object is new or whether it is an existing object. You would set the state from 'New' to 'Existing' when the user successfully saves the object. In grids, you could add an XPath constraint so that only objects with state 'Existing' are shown.
As you remarked yourself, the second issue can be solved by periodically removing these new objects. A safe bet is that a user does not take more than 24 hours to create an object. Thus, you could create a scheduled event that removes all objects with a createdDate more than 24 hours ago and with state 'New'.