I'd like to import mail from one account to another, but I have 10 or so labels in the one I want to export from. What's the easiest way to get the same labels on the same email messages on the new account?

please tell me you all have urged google to fix this. I use one gmail account for business and another for personal. before I opened the biz account, I had accumulated and saved several labeled conversations that need to be preserved and transferred out of the personal account. It just seems labor intensive and frankly ridiculous that gmail cannot export to another gmail account while maintaining the integrity of the multiple label structure.
–
user14741Nov 9 '11 at 21:26

Restoring the backup to your new Google Apps account

Once again, GYB will open a web page so you can grant it access. Be sure to sign in to your new Google Apps account this time.

Switch back to GYB and wait for your backup to be restored to the new account. This took much longer for me -- at least 4 or 5 hours with 800MB of mail.

Limitations

After I restored the backup, my old sent messages were labeled "\Sent" instead of actually being listed under Sent Messages. I'm assuming this is because it's not possible to actually place a message in the Sent Messages "folder". I just renamed the label to something like "Old Sent Messages".

Multi-word labels ended up being duplicated. I had a label named Work Stuff, and all of its messages were labeled both "Work and Stuff" after the restore. I just deleted one of the duplicates and renamed the other.

I don't know if a message's starred status is exported, since I didn't have any.

"it's not possible to actually place a message in the Sent Messages "folder". -- It is possible to place any message into the actual Sent messages folder in Gmail. I've done that in OS X Mail.app many times.
–
DaeJan 31 '14 at 10:11

If you absolutely need the old label
structure, the only solution is to use
an IMAP client to connect to both the
old and new account and copy over
folders/labels. But this solution can
be tricky, because you can only copy
over a certain (unspecified) amount of
mail at a time. The non-Google program
Gmail Backup might be able to assist
with this process, but I can't vouch
for its effectiveness.

Caution: do this at your own risk. If you accidentally press delete while in the trash, your messages will be gone forever.

Clear your trash on your old account.

Trash all your messages in your old account.

Untrash a single label.

Import the messages to your new account using the POP3 feature (Get mail from other accounts).

Tag all these new messages with the same label you used on your old account.

In your old account, trash the messages that were imported successfully.

Repeat steps 2-5 for each label.

Untrash your messages.

This will probably only help you if you use labels as folders (i.e. one label per message). Otherwise your POP3 client will have already read messages from before and it gets messy. If you don't mind messages having the exact same tags, then it's fine.

Update:

I just tried it, and this should work. The reason it works is that when you put messages in the trash, two things happen:

The labels are preserved.

POP3 clients will not see the messages.

Note: When you trash the messages from the All mail folder, the following misleading message will be shown:

Moving conversations from All Mail to
the Trash will remove them from all
views, including labels and search
results. This is because in Gmail, a
conversation can be displayed in a
variety of views, but there is only
one copy. Are you sure you want to
move the only copy to the Trash?

It sounds as though the labels will be removed, but in fact they will be preserved in the trash. It's just letting you know that when you click on one of the labels on the left, you will no longer see the message since it is in the trash.