Here's an attempt at a simpler explanation:
Django is pronounced with an initial sound that, in English is often written "j". This might lead one to think of the "D" as silent with the "j" being pronounced the way it is in English.
However, that doesn't explain why the "D" is there in the first place.
A more insightful way to think of it is to remember it's a French spelling. Think of the "j" as being pronounced as in French. Now put a "d" sound in front of it. When the "d" sound and "j" sound merge, you get something called an affricate. This particular affricate is the same sound used in English to pronounce just "j".
So a French "dj" is like an English "j". The "d" isn't silent, though, because the French "j" is not the same as the English "j".
It occurs to me that French might not natively have the affricate /d͡ʒ/ ("Django" is technically a Romani word) and so some native French speakers may actually try to pronounce "Django" as /ʒɑ̃ɡo/ which would, ironically, make the "d" silent in that case :-)
EDIT: one French speaker on HN told me this is not the case and French speakers would have no problem with /d͡ʒ/.
Interestingly, I've heard at least one person pronounce Django as /də'ʒæŋɡəʊ/ which I guess is an attempt to pronounce a strict /d/ for "d" followed by /ʒ/ for "j".
Some people on HN have pointed out that I'm sloppy in talking about /dʒ/ above rather than the true affricate /d͡ʒ/. I concede this.
However, pointing out that /d͡ʒ/ technically doesn't start with a /d/ doesn't make the "d" in "Django" silent.
The best explanation for why "Django" is spelled with a "d" is not that the "d" is silent and the "j" represents /d͡ʒ/ but rather that the diagraph "dj" represents /d͡ʒ/.
My main point was that the "d" exists in "Django" because "j" alone would be pronounced /ʒ/ and hence the "d" isn't a silent letter but exists explicitly to contrast /d͡ʒ/ with /ʒ/.
On a final note, Django Reinhart's last name is mispronounced by most people, even those that get "Django" right. Try saying "wren-art" with an outrageous French accent and you'll be closer :-)
So it's great that Tarantino's film teaches the correct pronunciation (well, close enough—the bit after the "dj" is still an English approximation to the French pronunciation) it is incorrect to say "the D is silent".
What is confusing people is the "j". In French, "j" is pronounced differently. In IPA, it's written /ʒ/ and pronounced like the "s" in "vision".
The sound at the start of "Django", is much like the sound at the start of "James": think of it as a /d/ + /ʒ/ merging to form /d͡ʒ/.
This combination /d͡ʒ/ is often written just as "j" in English, which is why "Django" is sometimes incorrectly pronounced as "duh-jango" (or /də'dʒæŋɡəʊ/). But in French, /d͡ʒ/ can be written "dj" because the "j" alone is just /ʒ/.
The D is not silent, it's very much pronounced.
In IPA, the correct French pronunciation of Django Reinhart's is /dʒɑ̃ɡo/ although most native English speakers who get it "correct" are happy to say /dʒæŋɡəʊ/. Notice the /d/ at the start.
EDIT: as clarified below, this wording is a little sloppy as it suggests /d͡ʒ/ is just the stop+fricative and not the affricate.
Back at DjangoCon 2009, I gave a lightning talk on the pronunciation of "Django". One of the things I ranted about at the time was that the Django FAQ was incorrect in saying "the D is silent".
So it's very frustrating to hear this falsehood perpetuated on the big screen in Quentin Tarantino's Django Unchained where the eponymous character spells his name, adding "the D is silent".