You can't rally "transfer" an account; each account must be established by the responsible party.
If the new owner already has a DH account, then you can simply remove the domain in question from your hosting account, and they can add it to theirs (assuming they did not create their account with a promo code).
Should the "other" account have been opened with a promo code, you will need to contact support; the prevent transfer of domain hosting between accounts with promo codes to prevent fraud relating to the "one time' use of a promo code.
If the new owner does not already have a DH account, it is not as simple as above. You can't really "transfer" the account, as the new owner will need to obtain their own account (establish identity, make payment arrangements, etc.). Once that is done, the process is the same as above (unless you have already "dropped" the domain from your hosting plan).
"Transferring" the hosting to another (non-DreamHost) host is just a matter of changing the DNS records.
You will need, of course, to arrange for appropriate whois record modifications if the domain registration itself also changes. This is done at the registrar (who may, or may not, be DreamHost.)