Is there a difference when using insegnare, impartire, or fare to say that you are teaching a lesson? If not, which is more commonly used?
Insegnare takes as its object the subject being taught, rather than the word lezione, as in Insegno il francese a Gianni. Impartire una lezione is quite formal (the original meaning of impartire being “to share (something) among several people”), while fare is on the colloquial side; a good middle course to say “to give a lecture” is tenere una lezione.
The most commonly used among the three, while talking, is Insegnare. For instance:
Insegno inglese all'università
which would be a good answer if somebody asks "what's your job?" or, if they know you are a teacher, "what do you teach?".
If you want to express the fact that the course is happening right now, in this period of time, with a continuity concept, the best verb would be Tenere. So it would sound something like this:
In questo periodo sto tenendo un corso di inglese all'università
or, for instance if somebody calls you during a class
Non posso rispondere ora, sto tenendo una lezione all'università
Impartire, as somebody else said, is unusual for verbal conversation, since it's archaic and very formal. Fare is very generic and my Italian teacher used to suggest we find more specific verbs, since it's always possible. To use often Fare is a symptom of a scarce vocabulary, so it's better to avoid it when you have a better and more specific alternative.