Yes you can use case in a where clause. I think if you explain the desired results and post the table structures and dummy data, we can come up with a simpler solution.
Oh and unless you put ANSI NULLS OFF, Null is never equal to anything so you need to use Is Null or Is Not Null for Null comparisons.