I have a theory that many people simply do not trust L2s. They think they're insecure and susceptible to the operator manipulating user assets.
This is not true. It's possible to take a transaction hash, which is generated by your own wallet, and cryptographically prove the transaction was executed by the L2 and posted to L1.
This repo is a program, later a website, that takes a trusted transaction hash and demonstrates each of these steps.
This is, in many ways, a more verbose re-implementation of Noah Citron's helios light client.
More info in ProjectPlan.md.