I'll throw in 2 cents worth too. Your surface is g(x,y,z) = c. Suppose you have a smooth curve on the surface parameterized as
[tex]\vec R(t) = \langle x(t),y(t),z(t)\rangle[/tex]
Then g(x(t),y(t),z(t)) ≡ 0 as a function of t. Therefore its derivative with respect to t must be identically 0. We have, by the chain rule,
[tex]g'(t)=g_x\frac{dx}{dt}+ g_y\frac{dy}{dt}+g_z\frac{dz}{dt}[/tex]
[tex]= \langle g_x,g_y,g_z\rangle \cdot \langle \frac{dx}{dt},\frac{dy}{dt},\frac{dz}{dt}\rangle=\nabla g \cdot \frac{d\vec R}{dt} = 0[/tex]
This tells you that the gradient of g is perpendicular to R'(t). But R'(t) is tangent to the curve R(t), which lies on the surface. Think of all the curves on the surface passing through a particular point P on the surface. The gradient at P is perpendicular to all these curves. The only way that could happen is if it is perpendicular to the surface itself.
