Custom profile fields - different fields for different member levels

I'd like to do two things:
1. Have a branded profile page, so members don't see the default WP admin backend. I just need them to be able to do the most basic actions like change their password, add profile info, etc.
2. On that page, I'd like to have different profile fields for different membership levels. Right now I'm working with attendees and speakers, so obviously we need more info from speakers.

I know there are plugins to do part one (Theme My Profile, for instance). Do you have one that you recommend?

I can add the custom profile fields via my functions file. Is there a PHP function to call to check the user membership, so I can hide the details from attendees?

..Or is there some magical way to do this all in one go?