It's not that hard to check for. Simply do a regexp search on your code for "variable =", where "variable" is one of the instance variables in the class, and ensure that all occurrences are in the constructor. Also need to avoid calling mutating methods of built-in classes - this is easy with Strings and Dates, but you need to be very careful to make copies of all your collections. I could write a simple script or Eclipse plugin that does it all for me.
This, again, assumes you can trust your libraries. A single method that doesn't follow this convention will pollute anything that calls it.
I've done things like this, in Python and to a lesser extent in Java. It works. It is pretty easy to slip up - I've had some bugs introduced because I forgot to copy a list - but it's at least a tractable problem. Gets easier if you use things like list comprehensions and slicing, which copy by default. Though Java's lack of support for closures can make this difficult.