Multiple user-selected front page layouts
You could add a checkbox in the theme settings and adjust the page template accordingly in a page preprocess. 

Something similar to this would go in the theme-settings.php file in your theme...

function THEMENAME_system_theme_settings_alter(&amp;$form, $form_state) {
    $form['front_layout'] = array(
      '#type'          =&gt; 'radios',
      '#title'         =&gt; t('Front Page Layout'),
      '#options'       =&gt; array(
        'layout_1' =&gt; t('Layout 1'),
        'layout_2' =&gt; t('Layout 2'),
        'layout_3' =&gt; t('Layout 3'),
      ),
      '#default_value' =&gt; theme_get_setting('front_layout'),
    );
}


Add new page template suggestions in a page preprocess ...

function THEMENAME_preprocess_page(&amp;$variables) {
  if ($is_front) {
    $layout_setting = theme_get_setting('front_layout');
    $variables['theme_hook_suggestions'][] =  'page__' . $layout_setting;
  }
}


This would allow you to have separate page templates for each layout. An example being page--layout-3.tpl.php.

If it's merely css changes you need, you could add a body class in an html preprocess ... 

function THEMENAME_preprocess_html(&amp;$variables, $hook) {
  if ($is_front) {
    $layout_setting = theme_get_setting('front_layout');
    $variables['classes_array'][] = drupal_html_class($layout_setting);
  }
}


In this example you would have a "layout-1", "layout-2" or "layout-3" class on the body element.