I was able to prototype quite a bit
I would like to see (i.e., code), if you have any.
There are still issues with this type of funding. Both parties have no guarantee that the other will fund their transaction. Similarly, once the funds arrive, there is no guarantee that the other party won’t hold the Bitcoins hostage, since both parties must agree to spend them out of the shared address. There are less sinister problems that could exist, such as the other party losing their private key to the shared address or just becoming unreachable.
The sequence of events having to do with the creation of transactions is very important in solving the trust issues you mention.
Just because a transaction is created, and even if it is signed, it needs to be broadcast. It seems obvious, but my point is that a transaction can be started by one party, say with the inputs that are then signed by party1, then sent to the second party (i.e., not published), additional inputs can be added by party2, signed by party2, and sent back to party1 to be broadcast. Or do I have this wrong?
The first prototype I made was very thrown together to generate hardcoded transactions just to prove it would work. I shifted to a slightly different model. I need to pull a little bit more work into actually getting redemption working, but I'm close. Here is the depot:
https://code.google.com/r/allenpiscitello-oracle2/ I'm building on top of bitcoinj. I haven't had a huge amount of time to take my prototype (scattered through a big mess of stuff on my machine, not suitable for publishing), but this should at least show some of the ideas.
As for your question about sequence of events. Transactions do eventually need to be broadcast. Different transactions can be broadcast at different times, so it depends which exact transaction you are referring to. You generally have it correct, you can construct the transactions and pass them around as they get funded. This is exactly how I expect the redemption contract to work. Oracle signs it, gives it to Party 1, then Party 1 signs it and broadcasts. For constructing the contract itself, that's a trickier issue since there can be some exploits that Party 2 could employ to get an advantage. For example, let's say Party 2 has a signed funding contract for the transaction. Rather than signing and broadcasting it, he simply holds it. He waits until the event happens (or more information is known), then he decides to fund it or discard the transaction. If the event will go in his favor, he signs it and broadcasts for a sure win. If it goes against his way, he simply never funds it. Party 1's only option is, after a set amount of time, he gives up that Party 2 will ever sign it, and makes a new transaction that spends it.
I could have misunderstood your concern, but let me know if I missed the mark.