I like to comment on one point that JMK made; user identity being passed to authenticator before the tunnel is set up. Note that this is first user ID passed, requested by (i.e) wireless AP. This userid will always be passed unencrypted but the catch is to configure, on the supplicant, this id as anonymous instead of real user id. Wireless AP won't care whether 'anonymous' or real id is received. In this sense, both PEAP and TTLS supports user identity hiding.
Just a side note, I am still going with TTLS since I have to support *nix clients.