I just got back from a two week business trip in Europe, London and Moscow. On this trip, I've found the iPhone to be a bit odd in terms of time zone support.
I synchronize my iPhone with an Exchange account. All of my calendar entries come from this account.
When I arrived in London, my phone changed to local time, but none of my calendar entries moved. At first I thought it had only changed times, not time zones, but after some searching, that turned out to be incorrect. You see, Apple has an odd way of describing its calendar settings.

This is the setting that was specified in my phone. This explained why my calendar entries didn't switch. It turns out I had to switch it to Off to get the calendar entries to honor time zones in the entries.

The second problem arrived when I got to Moscow. My phone didn't automatically change time. It was set to Set Automatically.

I set the timezone to Moscow, and everthing worked ok.

The only bad thing was the last night. I plugged my phone in to charge, and it set the timezone back to Houston (which my computer was still set on.) I use my phone as my alarm clock, which didn't work so well when it was set to Houston time. Luckily my departure was late that morning, so I didn't miss anything.