I'm usually late to the party, but I just found a February article by Neil Davidson (of RedGate) Nine reasons not to use serialization. If you read the article, points 2, 3, and 4 have to do with serialization not being future-proof. I really haven't digested the whole article yet, but Neil knows his stuff, which makes me inclined to listen to what he has to say on the topic.
I'm currently running into big problems with serialization of objects to XML not being future-proof. As he says, even small changes to your objects can break things. Often, after refactoring a class I find that I have to clean up some serialized objects, or code around the changes. In the Java world, there's a solution to this. Basically, it involves versioning the serialized data, so that you can safely de-serialize the class. Does anyone know of a way to version objects like this with .NET? I figure one of the folks that just got back from XMLDevCon might have some good ideas about this..
-Brendan