Well, it seems as if you are using loop functions but you don’t have a loop. So I’ve altered your code to include the loops, since it is integral to my particular solution.
<?php
/*
Template Name: Archives
*/
get_header(); ?>
<div id="container">
<div id="content" role="main">
<?php if(have_posts()) : while(have_posts()) : ?>
<?php the_post(); ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php get_search_form(); ?>
<h2>Archives by Month:</h2>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>
<h2>Archives by Subject:</h2>
<ul>
<?php wp_list_categories(); ?>
</ul>
<?php endwhile; ?>
<?php else : ?>
<!-- Display "Posts not found" message here -->
<?php endif; ?>
</div><!-- #content -->
</div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
So basically you are checking to see if any posts exist for the current query using have_posts(). If have_posts() returns true, the loop starts and each post is displayed. If it returns false, it means that this particular query found no posts. Hope that helps.