First of all, take out those NOLOCK. You may be a gambling man, but gambling does not really have a place in database systems.
The reason you lose the rows is that logically, FROM-JOIN is evaluated first, and this gives you all items, with NULL values for the rows in QueueItemDeactivation where there is no match. Next the WHERE clause is computed, but since you compare NULL to those status values, this means that you lose these rows. That is, you are effectively turning the outer join to an inner join.
Jeff suggest that you move the entire WHERE clause to the ON condition. This solves the problem, but it is clear to only move the condition on QueueItemDeactivation .status.