I think they might make third-party escrow easier;
Why is it necessary to rely on a third party escrow service when most transactions could be made without?
For example #bitcoin-otc could provide a list of trusted representatives along with their bitcoin addresses which people can use as arbitrators. An (A + B) or (c) transaction where C is the arbitrator. Using CHECKMULTISIG I could imagine a form in the client with the destination address, a checkbox saying "Require authorisation from self" and an additional field "Add arbitrator" - relatively straight forward and the majority of transaction would not need to involve #bitcoin-otc or the arbitrator. However with P2SH hash #bitcoin-otc needs to have a web service to construct the transaction, users need to copy their public keys into the web service and once the script hash is constructed add it to their bitcoin client.
But the use case I REALLY care about is the secure, multiple-signatures-required-to-spend wallet.
I started trying to think of different ways split key wallets could maintain compatibility with the existing widespread use of pay to address. The easiest way would be for wallet services to mange the private keys of a number of User's public addresses and automatically forward payments received using a user defined CHECKMULTISIG template.
The other method I came up with started getting a bit complex, but i'll post it anyway:
Redefine OP_NOP1 as a new opcode
OP_ATTACH_SCRIPT. Conceptually it would allow the owner of an address to pre register a script which must be run before funds can be redeemed allowing them to change authentication method at their own free without needing to move funds.
After an OP_ATTACH_SCRIPT any successful call to OP_CHECKSIG will cause the top stack item to be inserted into an index using the pubKey as the primary key.
All calls to OP_CHECKSIG in a scriptSig that reference a public key which has an attached script cause the script to be retrieved and executed using the current stack. If the scriptSig contains a OP_ATTACH_SCRIPT it is executed after.
You first need to attach a script to an address by using a transaction with a scriptSig in the following format (example two signature transaction (A + B)).
scriptSig: OP_PUSHDATA1 33 {[pubkey2] OP_CHECKSIG}
OP_ATTACH_SCRIPTExecution:
OP_PUSHDATA1 33 {[pubkey2] OP_CHECKSIG}
OP_ATTACH_SCRIPT OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG