Probably overlapping several previous posts... Taking your htaccess at face value without getting into the underlying issues:
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{REQUEST_URI} helpdesk.cgi
RewriteCond %{HTTP_REFERER} !^http://www.domain.com/index.php
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule .* http://www.fbi.gov/
Almost every single line is wrong :( All you need is
RewriteCond %{HTTP_REFERER} !^http://www\.example\.com/$
RewriteRule helpdesk\.cgi - [F]
#1 You don't want to constrain the rule to GET. In fact, your real problems are probably with POST, which should be covered in a separate rule. Blank user-agents also belong in a separate rule. I have mine in mod_setenvif as "BrowserMatch ^-?$ keep_out" leading to Deny from...
#2 The name of your front page ends in / alone. Ahem. Doesn't it? You will also need an alternative line-- involving cookies maybe-- for users whose browsers don't send a referer.
#3 The Rule applies to one specific page, so that goes in the Rule itself. Otherwise apache has to stop and evaluate the conditions for every single request it ever gets.
#4 Robots don't follow redirects, so fbi.gov is emotionally satisfying but really doesn't do anything. And it would annoy the fbi if it
did work.
#5 All RewriteRules must end in [L] or some L-equivalent flag*, in this case [F] for Fail = 403. If you did redirect, it would be [R=301,L] because a redirect does not carry an implicit [L].
* Except in special circumstances best expressed as "unless your name is jdMorgan".