For individual messages, you will need an IMAP capable email client and connect it to both (or more) accounts. I can only speak about Thunderbird, but the same principles apply to other tools as well.
Basically, either copy or move the message from one account to another.
Beware, however, of folders! GMail has no such thing as folders, but only tags. Thunderbird translates this into folders. One GMail message with two tags corresponds to two (identical) messages in Thunderbird, in different folders.
If you move a message out of a folder, Thunderbird essentially tells GMail to remove the label from the message, which is NOT the same a removing it entirely. You may not care about residue in your 'All Mail' archive, but if you do, I found only one way to get it done:
- Copy messages (rather than moving) from one account to another.
- Move the messages to a 'delete me' folder or something equivalent.
- In the web interface of GMail, select all messages in your 'delete me' folder and trash them. In this interface, that actually means removing them. In any connected IMAP clients, the effect will be the disappearance of messages from any folders they were present in, corresponding to any tags they had.
NB: I never tested what happens if TB implements a move (as it does) as a subsequent 'copy' and 'move to Trash'. In GMail, messages live in the Trash for 30 days. What happens 30 days after a simple move from a folder in one account to another account, I don't know.
Another option is to 'bounce' messages. This fits the use case where you receive e-mail in one account, but should really have received it elsewhere and plain forwarding undesirably changes the message headers (sender, receiver, reply-to, dates, reply-to, etc). See this question for more details.