After much fruitful discussion and evolution, this proposal is now a series of "Bitcoin Improvement Proposals" -- see BIP 11, 12 and 13: https://en.bitcoin.it/wiki/Bitcoin_Improvement_Proposals
Sincere thanks to everybody who contributed improvements, ideas and code.
To keep things simple and avoid special cases in the ScriptSig, consider using the form of the 2-of-3 ScriptSig for all cases, including the case (a AND b) OR c.
ScritpSig: sig1 pubkey1 sig2 pubkey2 sig3 pubkey3 ... sigN pubkeyN
....any sig/pubkey pair may be a placeholder (e.g. OP_0 OP_0)
coblee's general case for ScriptPubKey works for all the m-of-n cases, and a variation of it would work for (a AND B) OR c and similar cases.