Different Header Files WordPress

Use get_header($name) where $name corresponds to a file in your theme with the following convention:

header-{name}.php

So the following calls correspond to theme files in this manner:

get_header('style1') //header-style1.php
get_header('style2') //header-style2.php
get_header('style3') //header-style3.php

Example:

<?php

    if($options['header_style']) {

        if(is_page('header2')) {

            get_header( 'style2' );

        } elseif(is_page('header3')) {

            get_header( 'style3' );

        } else {
            //dynamically generating the name
            get_header( 'style' .  $options['header_style'] );

        }

    }  

    //etc...
?>

Of course the $name can be anything you want.

See http://codex.wordpress.org/Function_Reference/get_header for more details.

As for your menu, you can link to the corresponding page that displays the desired header or you could in fact get more complex than that and have the menu items correspond to rewrite rules and query vars that then invoke different header templates.

But let’s see if the above helps you any before we go deeper.