The image is a few pixels higher then the text input for me too, but I don't see anything in your CSS or HTML that would cause this behavior.
I put 30 minutes into this riddle and the best I could come up with was to use a 1-row, 2-col table, put the text input and the image in separate cells, like this:
Code:
<form style="margin-top: 2px;" method="get" action="/tgpx/search.php">
<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr valign="middle">
<td align="left"><input style="margin-top: 2px;" class="adborder2" name="s" size="40" value="" type="text"></td>
<td align="left"><input style="margin-top: 2px;" name="submit" src="tommys_files/search.jpg" type="image"></td>
</tr></table></form>