I'm trying to create a new kind of escrow with bitcoin, not sure if it's possible
Partial answer (not a new solution - I merely adapted the micropayment channel protocol):
if you allow for public key exchange, one solution seems to me to be:


t1: source funds an address A controlled by source and escrow 
t2:
source partially signs transaction T spending A to destination. Then
she sends this partially signed transaction to escrow.


it is now up to escrow to sign and broadcast T so that destination receives the fund. Escrow cannot spend the funds differently (i.e. steal) as it would require source to cosign. 

(Problem: Escrow could decide to not sign and "block the funds" (that s why Refund transactions are included in payment channels). Solved by having Escrow partially sign and send to source a transaction R sending hte funds from A back to source at t0. It s now up to source to sends herself the funds from A back. Is this an issue? Not really if you have transaction R be "timelocked")

It seems harder to find a solution without public key exchange... but it is a bit strange to forbid public key exchange.