Casting a class multiple levels - possible?

Certainly. But it will only work if the object is being cast is indeed a derive2 class.
Here is a complete self-contained example, with code tags. Please show your code this way so it is easy for others to give it a try.

module prg;
class base;
  int x;
endclass

class derive1 extends base;
  int y;
endclass

class derive2 extends derive1;
  int z;
endclass
base b1,b;
derive2 d2,d;
initial begin
   d = new();
   b1 = d; // no $cast needed
   $cast(d2,b1); // $cast needed, and will succeed
   b1 = new;
   $cast(d2,b1); // $cast needed, and will fail
  end
endmodule