Update! I finally got my unlock working. I got inspired after reading a couple posts (sorry I can't link them due to low post count).
Note: these posts talk about how to install and activate an original iPhone without having your phone's UDID registered as a development device via a valid Apple iPhone developer account. I DO have a registered device, so this is not what I was after- I simply wanted a way of preserving my unlock while updating to OS 3.0. But I believe the difference for me was (1) restoring to 2.0.2 not 2.2.1, and (2) using QuickPwn RC2 not latest QuickPwn.
Anyway, here's what I did (on Windows XP PC with iTunes 8.1):
1. Shift + Restore from iTunes and restore (not update) to firmware 2.0.2. Do not restore from a backup. Unplug after Restore before iTunes can try to activate it.
2. Insert T-Mobile SIM card and run QuickPwn RC2, selecting only the unlock option but otherwise following all steps. This gives me an unlocked iPhone running 2.0.2
3. Disconnect PC from internet.
4. Shift + Update from iTunes to update (not restore) to new OS 3.0 beta firmware 2 (released 3/31/09). The 1st time I tried this I got error 1611, but I used (latest) QuickPwn to bring the phone back to life (still running 2.0.2) and tried again, and the 2nd time it worked. This gave me an unlocked iPhone running new 3.0 Beta 2.
I don't know whether step 3 is necessary, nor do I know if the Beta 2 makes any difference from Beta 1. All I know is that this worked for me.
I've read reports that restoring to 2.2.1, unlocking with latest QuickPwn, and then restoring to 3.0 preserves your unlock when all performed from a Mac but I've got the 10.5.6 DFU mode bug and couldn't be bothered to hack my USB drivers to bypass it to try all this on the Mac, so I wanted something that would work from PC. My impression is that on the PC side, restoring to 2.0.2 and using QuickPwn RC2 are what makes the difference.