You might do better to define a root-finding function that, given a value for y, finds Re[x] and Im[x]. Using the redefined form I showed earlier, with s and t as variables for the real and imaginary parts of x respectively, this might be done as below. I use random starting points so as to have a chance at sampling from different branches of the solution curve.
root[yval_?NumericQ] := {s, t} /.
FindRoot[{re == 0, im == 0} /. y -> yval, {s,
RandomReal[{-5, 5}]}, {t, RandomReal[{-5, 5}]}]
Here is how it looks.
pts = Quiet[Table[root[j], {j, .01, 8, .01}]];
ListPlot[pts]
