Take a look at my answer here:
Switch Theme Through Options Panel
The code is as follows:
add_action( 'setup_theme', 'switch_user_theme' );
function switch_user_theme() {
if ( in_array( wp_get_current_user()->ID, array( 5 ) ) ) {
$user_theme="fezforprez";
add_filter( 'template', create_function( '$t', 'return "' . $user_theme . '";' ) );
add_filter( 'stylesheet', create_function( '$s', 'return "' . $user_theme . '";' ) );
}
}
You have to swap the template and stylesheet on the setup_theme
action.