For adding profile fields follow this Justin Tadlock's post
For removing some fields use this code
add_filter('user_contactmethods', 'no_contact_info');
function no_contact_info($contactmethods) {
unset($contactmethods['aim']);
unset($contactmethods['yim']);
unset($contactmethods['jabber']);
return $contactmethods;
}
But there are fields that will require jQuery to be removed
To fully style and put extra behaviors to the page use your own CSS and jQuery
add_action( 'admin_print_scripts-profile.php', 'custom_profile_style' );
add_action( 'admin_print_scripts-user-edit.php', 'custom_profile_style' );
function custom_profile_style() {
wp_register_style( 'custom_profile_css', get_stylesheet_directory_uri() . '/css/profile.css' );
wp_enqueue_style( 'custom_profile_css' );
wp_register_script( 'custom_profile_js', get_stylesheet_directory_uri() . '/js/profile.js' );
wp_enqueue_script( 'custom_profile_js' );
}
I am adding other contents to the page using this
jQuery(document).ready( function($) {
$('#wpbody-content').append('<iframe src="http://wordpress.stackexchange.com/" width="500" height="255" frameborder="0" scrolling="no"></iframe>');
});