A few thoughts...
We have to move the items of each package (faqs,news,
bboards, etc...) that the duplicated account owns to the
good account.
It seems like some (maybe most) of this could be done at a global level. For example,
update acs_objects set creation_user = :keep_user_id
where creation_user = :remove_user_id
A similar idea could be applied to memberships (acs_rels), though a bit of care should be applied, since if there are duplicate members and they are not the same level (e.g. "member" vs. "admin"), a *human* should probably decide which one to keep.
It's not clear to me that every package will need to take special action, and that some pages may have special user interfaces for human-assisted merging.