Alternate stylesheet only works with absolute address for link?

Try replacing <?php bloginfo('template_directory'); ?> with <?php echo get_template_directory_uri(); ?>

Also, I wouldn’t hook it to the initaction, why don’t use wp_print_styles instead? It is a style after all.