User profile private public toggle
Easiest way would be to change the access callback to the user page (user/%user) via hook_menu_alter. 
The new access callback would use the value of a user field to determine or the page is accessible or not. 

Code to give you an idea of the structure, not a fully functioning example

YOUR_MODULE_menu_alter(&amp;$items){
  $items['user/%user']['access callback'] = 'user_profile_is_private'; 
}

function user_profile_is_private($user){
  // Check the content of the user field here and return true/false. 
}


This tells drupal to use the user_profile_is_private function to determine or people can access the user page or not. This function should return true/false. 
The user object is passed to this function via the core user module already.

You'll need to add the core user access function user_view_accessin there somehow to prevent this change to override all other access settings.