For those who can't delete the party, you can optionally change the email to something guaranteed not to be an email. I used something like 'deleted' + party_id as replacement text.
Even if you find a convenient method to delete users who have not contributed content, you will probably find deleting 12,000 users to be inconveniently slow. You should finish your testing and reinstall the system. Deleting objects is not fast. Probably what we really need is a script that can temporarily drop constraints that slow down the process and clean out the old objects, then recreate the constraints.
Another thing we need is to someday move the email or login_id used for logins to something besides parties. Parties cannot login, and data from that table should not be used to log the user in.
It might actually be nice to abstract out the contact method for a user. Maybe a table like 'user_contacts' might contain a contact method, the address or user_id (like AIM handle or Jabber address, or Post URL), plus a preferred contact method.