from L. cunnus "sheath" > IE *kut-no- > (s)keu- "conceal, cover"

see also pudendum, vulva.

Just to prove its origin isn't necessarily dirty or insulting. In fact, the words skew and gut have the exact same origins.
CentrX says re: cunt: The etymology of "cunt" is as I say in my writeup, according to Webster's New World College Dictinoary and the Oxford English Dictinoary, and in accord with the many Middle English citations given in the OED where "cunte" is used. While it is possible that both "cunnus" and "cunte" both ultimately derive from the same word, what evidence is there that "cunt" comes from "cunnus" (and so directly as it is indicated in your writeup.)

From my book Latin Sexual Terms, which is a rather in depth book about just that. According to the book, cunt is derived from cunnus, with Norman-French as the intermediary, not Old English.