In regard to building a MyGradPlot function: Yes you could do that but I would recommend against starting out on that path, although you might eventually come back to it. The reason is that presenting information in a graphical form is as much an art as it is a science. (I recommend the books by Edward Tufte on data visualization for a taste of this.)
How you present graphical information depends strongly on the information you're presenting, in this case functions and their gradients. There are an awful lot of just 2-dimensional functions. How many have you presented in a graphical manner, with their gradients, so far? May I guess that it's not even one? And how many do you wish to make in the near future? Enough to spend the time to write a fairly general MyGradPlot?
Some functions might have a small range of values and only slowly changing gradient fields. Some may have wildly changing gradient fields, twisting and turning with large and small amplitudes. Some functions might have large nearly level plateaus and other regions with rapid variation. Would your routine be adaptive enough to give good representations of all of these?
Then there are many different techniques that could be used to present the information.
1) A dynamic Locator on a contour plot with a vector giving the gradient. Or a unit vector giving the gradient direction and a tooltip or label giving the amplitude.
1a) A dynamic Locator plot with the addition of a panel giving textual and numerical information: coordinates of the locator, value of the function, vector value of the gradient. Combining graphical and textual-numerical information in one dynamic display is a very powerful technique.
2) A contour plot with a grid of vectors giving the gradient. But this is poor with a wide range of gradient values or rapid change in a small region. Too many vectors just give you a confused or black screen.
3) A 3D plot of the surface with the gradient amplitude color coded on the surface.
4) An overall plot of the function and gradient and close-up plots of critical regions.
I'm sure there are many other techniques that could be used.
If your object is just to learn some math and physics and Mathematica usage, I would recommend doing some plots with varying functions as individual graphics, and dynamics if possible. You will learn more, and faster, about functions, gradients and Mathematica and have more fun, then undertaking a rather arduous task.
Of course, there might be cases where you are dealing with only a limited range of functions and you could easily write a function where all one had to do is plug in the function. The right hand side of your definition would probably be a Module where you calculated the various parts of the graphics and then assembled them for display. Even here, if you had a wider range of experience with the various methods and techniques, this would be much easier.