John, I agree with most of your points.
However, I wonder whether we really can make a concrete Configuration implementation serializable. The problem is that each important implementation is associated with a bunch of helper objects like interpolators, lookups, expression strategies, etc. Many of these objects would have to be made serializable, too, and its questionable whether this is feasible or even desired.
Maybe we need a different approach. One way could be to have a method like Serializable getContent() in the Configuration interface. This method would return a serializable object storing the pure data of the configuration. In addition, concrete Configuration implementations could define a constructor that takes a Serializable object and initializes the configuration with this data.
Based on this mechanism we could define a "canonical configuration serialization format", probably XML-based as XML is capable of storing all the hierarchical structure. This would allow for easy data conversion, e.g. the data from a PropertiesConfiguration is fetched and then an XMLConfiguration is constructed with it.
Of course, this is not as convenient as serializing Configuration objects directly. But maybe it's the closest thing we can get?