The idea I had was to offer a way to only soft-delete user accounts, meaning, to deactivate without destroying content. Here is how I could see it working.
1) User's ID number is retained, as is their history, all of which would be viewable only by staff. We might have an option in the Admin CP to list all deactivated members, or make it an option in member search.
2) Their publicly viewable username would disappear, and something like "Deactivated" would appear as their username, vs. "Guest". This would not be clickable (IOW, would not open up a membercard).
3) On a case-by-case basis, posts would disappear from public view, similar to how Coventry used to work in vB. (We would not want to soft-delete all of a member's posts--if we restored the account, restoring all soft-deleted posts would restore the good posts along with the few bad ones we had originally soft-deleted while the member was active.) As for quoted post attributes, those could remain...we've never worried about this in the past.
4) A one-click option to restore the account. The member would have to re-verify email of course.
5) Forum permissions could assign the Deactivate Account feature so that perhaps some on the staff could deactivate, but only a super admin could physically delete an account.
6) Spam/troll accounts we catch at registration time could easily be hard-deleted with no loss. So there might have to be a mechanism in place to handle this separately from deleting a member who has history (X number of days registered, Y number of posts, etc.).
In my forum currently, after this mistake, I went in and modified the admin templates to remove the Delete Member button. Sadly it's the only way to prevent this from happening again.