I've once tried something like this, but was (partially) unsuccessful.
The thing is that you build your form with some data, and later when the data comes back, you will want to process and validate the received data, right? But how can you do that if you only received partial data -- because as some fields are readonly, their data will not be in the received dataset?
Imagine you have a required-and-readonly field. You draw the form, but when the user submits the form, that field's data will not come back (as its a readonly field) and you'll get a "required" error.
I've hacked around this limitation by monkeypatching some methods and defining "missing" together with "readonly". But I think that it can be hard to put it all together in colander and deform.
If you guys have any idea, I would like to know too. :)