I see a few problems with your code.
- you are missing post_type field in your form.
- the name of the taxonomy dropdown should be the name of your custom taxonomy.
- the form method is set to GET yet you check the selected with POST.
so your form should look something like this:
<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
<div class="alignleft">
<select name="publication_categories">
<option value="0">Select...</option>
<?php
$theterms = get_terms('publication_categories', 'orderby=name');
foreach ($theterms AS $term) :
echo "<option value="".$term->slug.""".($_GET['publication_categories'] == $term->slug ? ' selected="selected"' : '').">".$term->name."</option>\n";
endforeach;
?>
</select>
</div>
<input type="text" value="<?php the_search_query(); ?>" name="s" id="s" class="searchinput" />
<input type="hidden" name="post_type" value="publication" />
<input type="submit" id="searchbutton" value="Search" class="btn" />
</form>