One simple way to fill this "gap" in the Gauss' proof is as follows.
Let $p(z)$ be a polynomial of degree $n$, and let $T=\mathfrak{Re}(p)$, $U=\mathfrak{Im}(p)$. The proof starts by observing that for a large $R$, the level lines $T=0$ intersect the circle $|z|=R$ transversally at $2n$ points, say, $\eta_1,\dots ,\eta_{2n}$; the signs of $U$ at those points alternate, and the signs of $T$ alternate on the arcs $(\eta_1,\eta_2),\dots,(\eta_{2n},\eta_1)$ This is easily done by comparison to the leading term.
Then, let us enter the dics $|z|<R$ along the level line $\gamma$ ($T\equiv 0$ on $\gamma$) at $\eta_1$, and follow this line so that we have $T>0$ on the right and $T<0$ on the left. The idea of Gauss is that we must end up somewhere, and this somewhere can only be on the boundary of the disc, i. e., at one of the points $\eta_k$. Now, since we have $T>0$ on our right, $k$ must be even, so the signs of $U$ at the beginning and at the end are opposite, which means that there was a zero along the way, i. e., a point where $T=0$ and $U=0$. Q. E. D.
It remains to justify "we must end up somewhere, and this somewhere can only be on the boundary of the disc". First, observe that by Cauchy-Riemann equations, every critical point $a$ of $T$ is a zero of $p'$ (say, of multiplicity $k$), which means that there are only finitely many of them, and locally, the set $T=0$ near $a$ consists of $2k+2$ smooth curves ensuing from $a$ at equal angles (look at the leading term of Taylor expansion at $a$). Now, we can consider the maximal initial segment of the curve $\gamma$ starting at $\eta_1$ such that all the points on that segment are not critical (this segment is a simple curve), and a sequence $z_1,z_2,\dots$ of points that escapes any smaller initial segment. If this sequence is unbounded, then this initial segment crosses $|z|=R$, and we are done. Otherwise, we may pass to a subsequence and assume that $z_k\to z_0$, which by maximality must be a critical point. But then we can continue $\gamma$ from there, say, by going straight, and ask for the new maximal segment, and in a finite number of steps the process terminates. Isn't it exactly what Gauss claimed: "algebraic curve either comes back on itself or it goes to infinity on both sides"?
Ostrowski's approach is even more "hands-on". He doesn't even use any complex analysis or the fact that the polynomial $T$ is harmonic. He comes up with a simple algebraic argument that after taking away suitable factors from $T$, there will be only finitely many common zeros of $T$ and $\partial_x T$ and finitely many common zeros of $T$ and $\partial_y T$. If $x_1,\dots ,x_m$ are abscisses of all these common zeros, then on each for the segments $(x_1,x_2),\dots $, the set $T=0$ breaks into several disjoint graphs $y(x)$ of smooth functions; in fact, since $y'=\partial_x T/\partial_y T$, these functions will even be monotone and thus have limits at the edges of the intervals. Then, at every point where these "elementary branches" meet, there is an even number of them meeting - after all, they separate domains of different sign of $T$. And then the proof is concluded as above.
All of this leaves a question as to why people keep claiming that Gaussian proof "contained a gap" in the first place, and why some of them call the gap "immense", and its justification - "subtle" and "requiring advanced topology". Certainly, any pre-Cauchy (pre-Dedekind, pre-Zermelo, you name it) proof of virtually anything is not completely rigorous from today's standpoint. But what Gauss used was intuitively obvious, and more importantly, the rigorous proof is straightforward - it hardly involves any mathematical ideas, just standard techniques to put epsilons and deltas in place and make the intuition rigorous. Nothing compared to the pre-Gauss proofs that tacitly assumed existence of splitting field, say.