I suspect that the first time you hit this page, there's no action parameter in the URL. If so, then isset() is going to be false. Also, you probably want !=, rather than ! ... == ....
I haven't tested this code, but here's where I would start:
<?php if (!isset($_GET['action']) || ($_GET['action'] != 'reply')) { ?>
<div class="actions">
<input type="button" onclick="javascript: document.location='?threadID=<?=$threadID?>&action=reply';" value="Post reply" class="btn" />
</div>
<?php } ?>
I also find this format slightly easier to read:
<?php if (!isset($_GET['action']) || ($_GET['action'] != 'reply')): ?>
<div class="actions">
<input type="button" onclick="javascript: document.location='?threadID=<?=$threadID?>&action=reply';" value="Post reply" class="btn" />
</div>
<?php endif; ?>