you can save a few bits:
if (is_single() || is_category() || is_archive())
category is always archive, so this does the same:
if (is_single() || is_archive())
same here: if(is_category() || is_archive())
simplifies to: if(is_archive())
---
the <a tag needs closing:
<h2> <?php if( !is_single() AND !is_page() ) { ?> <a href="<?php the_permalink() ?>" > <?php } the_title(); if( !is_single() AND !is_page() ) { ?></a> <?php } ?></h2>// List post title links
instead of if( !is_single() AND !is_page() ) you could try the if( !is_singular() ) conditional tag in the above.