Reorganize Language Switcher based on Country/Region
You can take a clue from below modules..


Hierarchical Select Module ...



  Hierarchical Select module defines the "hierarchical_select" form
  element, which is a greatly enhanced way for letting the user select
  items in a hierarchy.





Language Switcher Dropdown Module..



  Language Switcher Dropdown is a very simple module that exposes a new
  block, similar to the default Language Switcher block provided by
  Locale module. The new block allows site visitors to switch languages
  using a drop-down select list instead of using hyperlinks.





You need to build a custom module which displays region > countries using hierarchical select module
On Form Submit you need to do below actions which lang drop down does to redirect.


Please find submit handler code below from lang dropdown module..

function lang_dropdown_form_submit($form, &amp;$form_state) {

  $language_code = check_plain($form_state['values']['lang_dropdown_select']);
  $type = $form_state['values']['lang_dropdown_type'];
  $tohome = $form_state['values']['lang_dropdown_tohome'];

  $language_codes = locale_language_list('language');
  if (!in_array($language_code, $language_codes)) return;

  $types = language_types_configurable(FALSE);
  if (!in_array($type, $types)) $type = 'language';

  $path = drupal_is_front_page() ? '&lt;front&gt;' : $_GET['q'];
  $languages = language_negotiation_get_switch_links($type, $path);

  $language = $languages-&gt;links[$language_code];

  $newpath = (isset($language['href']) &amp;&amp; $tohome == 0) ? $language['href'] : '&lt;front&gt;';

  if (!isset($language['query'])) {
    $language['query'] = drupal_get_query_parameters();
  }

  $form_state['redirect'] = array($newpath, $language);

}