Acho que houve alguns fatores, cuja combinação foi maior do que a soma de seus pesos individuais.
Um é simplesmente o tempo: Django apareceu bem quando a primeira grande onda de hype do Rails estava crescendo, e então foi imediatamente retratado como uma espécie de "resposta do Python ao Rails". Isso resultou em um número não insignificante de olhos no projeto quase desde o início. O fato de Adrian estar no encontro "Snakes and Rubies" em Chicago e ter participado de conversas lado a lado sobre Rails e Django ajudou muito nisso.
Outro fator é que o Django é e sempre foi uma instalação de pacote único (bem, não exatamente: você ainda precisa de um adaptador de banco de dados, a menos que esteja no Python 2.5+ e usando SQLite, mas perto o suficiente). As alternativas não-Zope, todas focadas em deixar as escolhas de componentes nas mãos do desenvolvedor, exigiram um pouco mais de trabalho apenas para chegar ao ponto onde você pudesse fazer um tutorial básico: você precisaria ir caçar um ORM, um linguagem de modelo, etc., etc. e instale-os e configure-os. Embora isso tenha melhorado muito com o passar dos anos, acho que a lembrança persistente disso ainda tem um efeito.
E Django saiu do portão com uma documentação que (se assim posso dizer) estava muito acima do padrão usual para projetos de código aberto e só melhorou com o tempo. O tutorial, com todas as suas muitas falhas, atinge uma série de pontos altos que tornam o Django útil, e o restante da documentação sempre foi de boa qualidade, misturando tanto a referência da API quanto os bits "como fazer" importantes conforme necessário. Isso produz uma boa experiência out-of-the-box e ajuda na curva de aprendizado pós-tutorial (algo que sempre atormentou o Zope).
Eu também acho que há uma percepção - certa ou errada - de que, digamos, Pylons ou Werkzeug são realmente melhores para desenvolvedores experientes que já conhecem WSGI e o ecossistema da web Python; o fato de que eles tendem a ser escolhas fortes para pegar suas bibliotecas favoritas existentes e conectá-las é a fonte disso, eu acho, e talvez leve algumas pessoas mais novas em direção à abordagem integrada do Django. O outro lado, é claro, é que muitas pessoas que estariam melhor aprendendo mais antecipadamente antes de tentar Django não fazem isso;)
Por fim, acho que há algo a ser dito sobre a forma como o Django foi comercializado, ou seja, ele realmente não foi comercializado por um longo tempo, ou pelo menos não no sentido que, digamos, Rails foi comercializado. Até o Django 1.0 chegar, o esforço de "marketing" consistia principalmente em pessoas blogando (e houve alguns incidentes notáveis em que as pessoas foram solicitadas a diminuir um pouco o tom), palestras na PyCon e, em seguida, principalmente apenas melhorar o framework, construindo coisas legais com ele e deixando os resultados falarem por si. Agora, é claro, no mundo pós-1.0 temos o DSF e DjangoCon e consultores voltados para negócios fazendo sessões de treinamento e muitos livros e tudo o mais, mas isso tudo ainda é muito novo.
Eu espero que haja uma reação, assim como aconteceu com Rails, e na verdade eu acho que está fermentando há um tempo e já começou. Mas, até agora, acho que os fatores que listei aqui são pelo menos os principais por trás do crescimento consistente e constante da popularidade que o Django tem visto desde seu lançamento inicial.