Solution 1:

This is actually a very good question, and it has deep roots. Like many things, it goes back to Latin, which had very regular rules for naming its letters. English inherited the Latin system, extended it in various ways, and applied its own sound changes, resulting in the system we have today.

Vowels

All of the vowels in Latin were named with their long vowel sound. The vowels in English do the same, though the long vowels have gone through the Great Vowel Shift. This covers:

  • A
  • E
  • I
  • O
  • U

Stops

Sounds that were stops in Latin are pronounced with the stop sound followed by [e:]. The vowel sound has shifted to [i:] in English.

  • B
  • C — Note that this was [k] in Latin, but is now [s] in English, due to French which had a k > s sound change
  • D
  • G
  • P
  • T
  • V — Was not distinguished from U in Latin. It's not clear why it was added to this group.

Sonorants and fricatives

Sounds that were sonorants or fricatives in Latin were pronounced with [e] followed by the sound.

  • F
  • L
  • M
  • N
  • R — The vowel has changed here due to a sound change in English
  • S
  • X — An exception, added to this group because Latin didn't allow x at the beginning of a word

Miscellaneous

  • H — See other answers for the history of this sound
  • J — Didn't exist in Latin. The name came to English by way of French, where it was something like "jah" [dʒa:], which English sound changes turned into the modern "jay"
  • K — Was [ka:] in Latin, from Greek kappa, which English sound changes again changed into the "kay" that we say today
  • Q — Was [ku:] in Latin, mostly unchanged today
  • W — A "double-u", obviously. Didn't exist in Latin.
  • Y — Quoting Wikipedia: Old English borrowed Latin Y to write the native Old English sound /y/. When the letter came to be analyzed as a V atop an I (First Grammatical Treatise), it was renamed VI (/u: i:/), which was simplified to one syllable (/wi:/), and by the Great Vowel Shift became Modern English 'wy'.
  • Z — Existed in Latin only in borrowings from Greek. Originally [zed], from Greek zeta, but changed to [zi:] ("zee") in American English.

Solution 2:

The fact that consonant names are all more or less built on the same model is a rather modern phenomenon in the history of the alphabetic letters' names.

In the past, all these letter were named after the thing they represented.

Have you noticed for instance that if you rotate the letter A by 180°, it looks like a cow head? Well that's what the alf letter is supposed to represent in the original Phoenician alphabet: an ox (named alf => alef in Hebrew, alpha in Greek).

So Phoenicians kids would probably not say "aaaah" but "alf" (alf is actually not a vowel but the "stop" - there are no vowels in the Phoenician alphabet). Greek kids in turn would probably say "alpha", but one can already notice that we've passed from the name of the thing to the name of the letter itself because the Greek for ox is not alpha but boos (βοῦς).

Therefore the real reason why letter names have changed over time is actually that the original names are only meaningful in the language of their inventors and that they are thus harder to memorise by later adopters and therefore more likely to be simplified.

For the record, the simplified path from the "invented" Phoenician alphabet to today's "English" (Latin or actually post-Latin) alphabet is as follows.

  1. Phoenician Alphabet mainly local invention with Egyptian hieroglyphs inspiration (11/10th century BC) .
  2. Supplanting linear A and B in Greece in the wake of the intense trade between the Levant and archaic Greek kingdoms (9th century BC). In these times Greek was still written from right to left or even boustrophedon. In the process, the Greeks promoted a few unused consonants to fully functional vowels.
  3. Imported in Italy to write down Latin, Oscan, Etruscan and other early Italic languages (8th century BC).
  4. Supplanting futhorc runes as a result of the Christianisation of the heptarchic kingdoms (7th century AD).

Just a few more letters:

The B (also rotated, this a general rule of hand writing), is supposed to be a birds eye view of a house (=> in many Semitic languages : beth).

O: the lower case Greek omicron used to have a dot in the middle in archaic scripts. And the upper case still retains an horizontal bar. No wonder: that's supposed to represent an eye.

The M (pronounced mem in Pḧoenocian) resembles a lot the Egyptian hieroglyph representing water ripples (mem). Explanation of "em" ?

As for the H (pronounced "aka" in Latin and Italian, "ah" in German, "ash" in French), it is still close to its initial pronunciation: a wall (het => heth in Hebrew, ḥā in Arabic). It cannot follow the normal rule "bee", "cee" "dee" because it's aspired or silent (as other posters have convincingly shown). That would make it "hee". It does not sound right! Does it?

Solution 3:

Here's what Wikipedia says for h:

In almost all dialects of English, the name for the letter is pronounced /ˈeɪtʃ/ and spelled ‹aitch›1 or occasionally ‹eitch›. The pronunciation /ˈheɪtʃ/ and hence a spelling of ‹haitch› is often considered to be h-adding and hence nonstandard. It is, however, a feature of Hiberno-English2 and other varieties of English, such as those of Malaysia, India and Singapore. In Northern Ireland it is a shibboleth as Protestant schools teach aitch and Catholics haitch.[3] In Australia, this has also been attributed to Catholic school teaching and is estimated to be in use by 60% of the population.[4] The perceived name of the letter affects the choice of indefinite article before initialisms beginning with H: for example "an HTML page" or "a HTML page". The pronunciation /ˈheɪtʃ/ may be a hypercorrection formed by analogy with the names of the other letters of the alphabet, most of which include the sound they represent.[5]

The non-standard haitch pronunciation of h has spread in England, being used by approximately 24% of English people born since 1982[6] and polls continue to show this pronunciation becoming more common among younger native speakers. Despite this increasing number, careful speakers of English continue to pronounce aitch in the standard way, as the non-standard pronunciation is still perceived as uneducated, at least in most of the United Kingdom.[7] The pronunciation haitch followed the introduction of Phonics and was designed to help prevent working class children from dropping the initial H in words such as hospital (otherwise pronounced as 'ospital).[citation needed]

Authorities disagree about the history of the letter's name. The Oxford English Dictionary says the original name of the letter was [ˈaha]; this became [ˈaka] in Latin, passed into English via Old French [ˈatʃ], and by Middle English was pronounced [ˈaːtʃ]. The American Heritage Dictionary of the English Language derives it from French hache from Latin haca or hic.

Then of course there's the "zee" (USA) vs. "zed" (rest of the English-speaking world?) pronunciation for Z; apparently we Americans can thank Noah Webster for that one.

Solution 4:

Very generally, it's the result of multiple cultural influences on the language over time: some old English, some Germanic, and a wee bit of Latin. The strangest manifestation for me is "double-u." What is that?

Compared to a language like Turkish, which I am guessing hasn't been tossed around by as many cultural overlords, English is subject to a lot of regional influence as well. The last time I was in Heathrow airport, I tried listening to the public address announcer. Didn't understand too many words, and we probably don't agree entirely on the alphabet either ('zee' for 'zed', for example).