Automatic speech correction
This is part of the field called CALLS, or computer-assisted language learning.

It is an interesting subject, and the straight-forward approach would be to first do speech-recognition, then use NLP to find errors, and notify the user. Interestingly, I would think that any good speech recognition software would have to use NLP to disambiguate the speech (and possibly use NLP in additional ways). 

So it is sort of a catch-22: in order to recognize the speech, some sort of assumption that the user is using (mostly) correct langauge is made, and therefore NLP can be used to assist the speech recognizer. But in this case, you have to be much much more sensitive to the user using incorrect language. So I think a different approach is necessary, where you integrate the "incorrectness detector" directly into the speech recognition somehow.

Or, perhaps use statistical/machine learning methods entirely (or a combination); ie. train the machine on data of non-native language speakers, and use a learning algorithm to teach the machine what mistakes commonly happen. I am unsure how feedback would work here though.

More info, on non-native pronunciation error detection and feedback:


Rosetta Stone can evaluate pronunciation
Byki (the paid version gives feedback on pronunciation, I don't know how it works though)
Automatic Pronunciation Evaluation And Mispronunciation Detection Using CMUSphinx

Basically, research into exactly what you are asking, via speech recognition software method, I wrote about above.
EduSpeak®: A speech recognition and pronunciation scoring toolkit for computer-aided language learning applications (paywalled)


Machine learning approaches:


A new method for mispronunciation detection using Support Vector Machine based on Pronunciation Space Models
Automatic Error Detection for Unit Selection Speech Synthesis
Using Log Likelihood Ratio based SVM Classiﬁer
Mispronunciation Detection via Dynamic Time Warping on Deep Belief Network-Based Posteriorgrams


This is all mostly about pronunciation. For grammar, you can tack on something to speech recognition, using NLP. The same caveats apply to grammatical error detection as to pronunciation; NLP would normally likely be used as part of speech recognition, so the error detector would likely have to be integrated directly into the speech recognition software.

More info on non-native grammatical error detection and feedback:


Presentation: The Computer and Natural Language. Special Topic: Grammatical Error Detection
An Analysis of Grammatical Errors in Non-native Speech in English