Division of complex signal by frequency response
There are several things that could be going wrong here.  

Check your FFT lengths

If you do multiplication or division in the frequency domain, your frequency domain data needs to be at least as long as $N+M-$ where $N$ is your signal length, $M$ is your weighting length.

In matlab pseudo code this means you need:

N = length(x);
M = length(w);
freq_length = N + M - 1;

X = fft(x,freq_length);
W = fft(x,freq_length);

y = ifft(X./W);


So your resulting y will be longer than x.

If you don't do this, you will get time-domain aliasing because of the circular nature of convolution using the FFT.

Is your weighting real-valued in the time domain?

You may need to use conj(W) in the above, but you also need to check that w (the time domain version of the frequency weighting) is real-valued. If it's not, you will get a complex-valued signal.

Also note that you may get a small imaginary component.  Often times all that is required to remove this is:

yr = real(y);