FFT algorithm gives wrong signs on my output numbers
Reversing the order of the input sequence would provide the same result as what the OP achieved, but not to say this is exactly why it is occurring here. Below shows the details of the DIT algorithm after each stage; comparing each element step by step with the code should reveal the actual error.

Interpreting the OP's results (I assume [x] represents the index) reveals the error is in the core 2 pt DFT butterfly operation.
While the 2 pt DFT is given as
$Y[0] = X[0] + X[1]$ 
$Y[1] = X[0] - X[1]$
While the OP is doing the following:
$Y[0] = X[0] + X[1]$ 
$Y[1] = X[1] - X[0]$
With $X[0]$ and $X[1]$ as the 2-Pt DFT input and $Y[0]$ and $Y[1]$ As the 2-Pt DFT output.
  First stage:
  [0] + (1+0i)[2]   = 0+2
  [2] +(-1+0i)[0]   = 2-0   (should be 0-2= -2!)
  [1] + (1+0i)[3]   = 1+3
  [3] +(-1+0i)[1]   = 3-1  (should be 1 -3= -2!)
  Second stage:
  [0] + (1+0i)[2]       
  [1] +  (0-i)[3]
  [2] +(-1+0i)[0]
  [3] +  (0+i)[1]