Building on what VanishedOne wrote, there are a couple of ways to mark an objective as "invalid". It still shows up in the objectives list, but with a "crossed out" symbol in the checkbox.
You can do it with script code:
$player1.setObjectiveState( objNum, OBJ_INVALID );
where objNum is the objective number, e.g.:
$player1.setObjectiveState( 8, OBJ_INVALID );
Or with an atdm:target_setobjective_state object with the following spawn args:
"obj_id1" "8"
"obj_state" "2"
(once again, assuming the objective is number 8). Make the atdm:target_setobjective_state th