This is a construction that is restricted to certain dialects of US English.

It is not ungrammatical; that is, when someone says a sentence like this they are not making a speech error.  Instead, this construction is simply non-standard.  It so happens that the same construction is standard in German.

What is going on is a process called "modal stacking", where multiple modal verbs (e.g. "could", "should", "might", "would", etc.) can be stacked on top of each other.  *Each added modal verb contributes towards the overall meaning of the sentence.*  In Standard English, to convey the same meaning, we have to use another construction:

> I might **could** do that. --> I might **be able** to do that.

We are doing effectively the same thing in standard English in terms of semantics, it's just that we have to change things around to get around a syntactic restriction.

Despite what waiwai933 says, these constructions are not redundant by definition (they are only redundant if you stack them redundantly!).  I fail to see how either "I might do that" or "I could do that" would have the same meaning.

Other constructions include:

> - I might should do that. (= "Maybe I should do that")

> - I used to could do that. (= "I used to be able to do that")

Linguistically, it is completely valid, and isn't sloppy, meaningless, or redundant — as I said, they do this in German.  It is just non-standard in English.