The following is a somewhat naïve and inefficient Monte Carlo sampler that samples with higher probability far from a given point, and approximately uniformly according to the argument of complex numbers. This it forces the samples closer to the boundary of $W$.
We start by choosing $n$ and $A$:
n = 15;
a = RandomComplex[{-1 - I, 1 + I}, {n, n}];
If we sample uniformly from $\{x \mid \|x\|=1\}$, the result looks "blurry" because all the points are near the centre of $W$. But this at least allows us to estimate where its centre is:
xs = Normalize /@ RandomComplex[{-1 - I, 1 + I}, {100000, n}];
points = Table[Conjugate[x].a.x, {x, xs}];
center = Mean[points]
(* 0.213328 - 0.141669 I *)

Choose a random starting point for the Monte Carlo sampler:
x = Normalize @ RandomComplex[{-1 - I, 1 + I}, n];
y = Conjugate[x].a.x;
The vector arghist will keep a histogram of the complex arguments. We use it to force the sampler away from "directions" it has already explored. This ensures that it will go around the boundary.
arg2ind[z_] := 1 + Floor[(π + Arg[z]) k/(2 π)]
k = 100;
arghist = ConstantArray[0., k];
The parameters may need to be tuned for each problem:
beta1 = 200; (* lager: close to the boundary *)
beta2 = 0.5; (* forcing away from already explored portions of the boundary *)
stepsize = 0.05;
result = Union @ First @ Last @ Reap @ Do[
xp =
Normalize[x + RandomComplex[stepsize {-1 - I, 1 + I}, n]];
yp = Conjugate[xp].a.xp;
If[
RandomReal[] <
Exp[beta1 (Norm[yp - center] - Norm[y - center]) +
beta2 (arghist[[arg2ind[y - center]]] -
arghist[[arg2ind[yp - center]]])],
{x, y} = {xp, yp}
];
arghist[[arg2ind[y]]] += 1;
Sow[y],
{100000}
];
Graphics[{AbsolutePointSize[1], Point @ ReIm[result], Red,
PointSize[Large], Point @ ReIm[center]}, Frame -> True, Axes -> True,
AxesOrigin -> {0, 0}]

Since you say $W$ is convex, we can take the convex hull of these points per Michael's comment:
ConvexHullMesh @ ReIm[result]
