Interesting.
More info on the blame system would be nice.
How do you handle a case where a participant refuses to send on a message to the next person?
Does each of the communications have to kept secret?
When you say Bob -> Charlie, do you mean it is a broadcast? Are the messages digitally signed too?
You should explain the blame stage too.
Assume that Bob cheats, he includes 2 addresses for himself.
Alice to Bob: enc(ekB, enc(ekC, enc(ekD, A')))
Bob to Charlie: enc(ekC, enc(ekD, B')) ; enc(ekC, enc(ekD, X'))
Charlie to Dave: enc(ekD, B') ; enc(ekD, C') ; enc(ekD, X')
Dave to all: D', B', C', X'
Alice complains that her address is missing.
Each participant publishes their private key. The process can be stepped backwards, until the "mistake" is detected.