ClearAll[f,grad,normal];
f[x_,y_]:=x (y^2);
grad[x_,y_]:=Grad[f[x,y],{x,y}];
normal[x_,y_]=Simplify[grad[x,y]/Sqrt[grad[x,y].grad[x,y]]]

Manipulate[ContourPlot[f[x,y],{x,-2,2},{y,-3,3},Epilog->Arrow[{pt,pt+normal@@pt}],PerformanceGoal->"Quality",Contours->100,PlotRange->{{-2,2},{-3,3},{-30,30}},ImageSize->Medium],{{pt,{.01,-0.1}},Locator},FrameLabel->"Click a point to see its normal",SaveDefinitions->True]

ClearAll[g1,g2];g1=ContourPlot[f[x,y],{x,-2,2},{y,-3,3},Contours->100,PlotRange->{{-2,2},{-3,3},{-30,30}},ImageSize->Medium];
g2=VectorPlot[normal[x,y],{x,-2,2},{y,-3,3}];

Show[g1,g2]