Atualmente, utilizar o lxml para escrever XML em Python está cada vez mais comum. Não existem grandes dificuldades para entender o lxml, mas se o seu uso não for bem planejado, você pode terminar tendo uma replicação de código enorme.
Foi em uma conversa com um amigo que escrevi um wrapper para remover a replicação de linhas que existiam na geração do XML dele. O código está abaixo para ser utilizado como bem entender.
Nota: Existem alguns problemas ainda e o principal é que estou utilizando um DICT para fazer a passagem dos parâmetros para a geração do XML. O Dict não mantem a ordem de entrada dos dados, então a saída do seu XML ficará um pouco bagunçada.
O código está disponível aqui: https://gist.github.com/3425176
Abraços a todos!