Before the product even ships, the sender must send the bitcoins to the Bitcoin address. And since the private key is encrypted neither party has access to the money and that point. And there is no way for the sender to unencrypt the encrypted private key so they won't be able to take back the funds after they send it.
The only flaw I can see is if the "sender" is just plain a jerk and sends the money to the address, receives the product, and then never sends the final encrypted private key back to the receiver. But if that happens the bitcoins are stuck in the escrow wallet to the end of time... or until someone figures out how to unencrypt an address.
So you'll never have an issue of sending a product before the money is sent.
Update: I guess there could also be a ■■■■ of a seller who gets people to send money to an address and then never ships the product. But then again we have the same issue of the bitcoins essentially being burned and no one gets access to them.
So I guess in the end reputation of the "seller" probably does matter. But this system does provide the ability to verify that a payment has been made and confirmed BEFORE parting with the product or service. And provides the ability for the buyer to make sure the seller doesn't walk away with the money BEFORE the transaction is completed.