I think there's a difference, although the difference is not black-and-white and people might have different judgements.
(A) 나는 [시험 준비를 하고 있지] 않다.
(B) 나는 [시험 준비를 하지 않고] 있다.
(A) is a simple negation of progressive(?) "나는 시험 준비를 하고 있다."
(B) has the progressive of negation, so it sounds somewhat like "I am continuously in the state of not preparing for the exam." Unlike (A), here it sounds more like "not preparing for the exam" is a deliberate choice or the result of some unfortunate happenstance (maybe you forgot to bring the book from school).
For example, if you've been studying for hours and briefly came to kitchen for snack, you can say (A) (because you're not currently preparing for the exam, right at that moment), but (B) would be strange.
Maybe the following example might make it more clear:
(C) 정부가 사업을 승인했다. = The government approved the project.
(D) (??) 정부가 사업을 승인하고 있다.
(E) (?) 정부가 [사업을 승인하고 있지] 않다.
(F) 정부가 [사업을 승인하지 않고] 있다. = The government is (still) not approving the project.
To me, (D) sounds strange, because normally "approving a project" is considered an instantaneous process: either the project is already approved, or it is not. So, unless you are right in the middle of the meeting where the decision is being made, people wouldn't use (D).
For the same reason, people wouldn't normally use (E), although I'm less sure about that. (Compound auxiliary verbs are tricky.)
On the other hand, (F) is clearly natural, because "not approving a project" is something that can happen over a period of time. Maybe the government is not satisfied with the proposal, or maybe there are too much local opposition, or maybe they're just lazy. For whatever reason, the government is continuously in the state of "not having approved the project", and (F) signifies that.