How to assign a Contribution to a different contact or otherwise have the receipt go to a different contact
A long time after the question was asked ... but see https://civicrm.org/extensions/move-contribution