I don't really expect this will be implemented, but I hope people will find this interesting.
Transaction structure is the same but an extra field, txSize, is added. Transaction hash is the hash of everything with scriptSig removed, and this is the hash going to the Merkle Root. As the scriptSig will not go to the Merkle Root, it won't be really recorded in the blockchain. People can freely mutate the scriptSig (even after confirmation). Miners will accept a transaction if they see a valid scriptSig and the transaction size is equal to txSize. This will make sure the block size is not mutable.
Payer could opt to sign the txSize or not.
This could be a hardfork, or a softfork with the auxiliary block:
https://bitcointalk.org/index.php?topic=283746.0Any comment?