This got too long for a comment to Dylan's answer.

I like the discussion of these ideas in John Lee's book Introduction to Differentiable manifolds (the relevant part isn't in the google preview).  He refers to these approximation results as the Whitney Approximation Theorem, and deduces them from the tubular neighborhood theorem and the Whitney Embedding Theorem.  Interestingly, he doesn't use convolution.

Here's a sketch: start with a continuous map from $f:M\to N$, and embed N in R^n.  First Lee proves that there's smooth map $g: M\to R^n$ close to f (inside a tubular neighborhood of N, say) and then he uses the projection from the tubular neighborhood back to N to get his approximation to f.  Note that since balls in $R^n$ are convex, once g is sufficiently close to f there's a linear homotopy linking them, which lies entirely inside the tubular neighborhood.

To produce g, the rough idea is that near any point x in M, the constant function with value f(x) is a "good enough" approximation to f.  This gives an open cover of M, and there's a finite subcover, with a subordinate partition of unity $\phi_i$.  The approximation to f is now gotten by averaging these constant functions using the partition of unity: $g(x) = \sum \phi_i (x) f(x_i)$.

Lee explains how to modify this in the case where f is already smooth on some closed subset, and you want to leave it unchanged there.  (That allows you to approximate homotopies.)