Solution 1:

It comes from Italian military manuals, and the English spelling preserves the Italian form, colonnello. Two pronunciations coexisted; the r prevailed in English. Spanish took both the spelling and pronunciation: coronel.

http://www.etymonline.com/index.php?term=colonel

Solution 2:

As reported from the NOAD:

ORIGIN middle 16th Century: from obsolete French coronel (earlier form of colonel), from Italian colonnello (column of soldiers) from colonna (column) from Latin columna. The form coronel, source of the modern pronunciation, was usual until the middle 17th Century.

The word is pronounced in a strange way because it kept the old pronunciation, while the word changed spelling.