Serialization is very powerful and has multiple uses, besides the already mentioned by other users:
Sometimes you want to deep copy an object and a simple way to do it without falling into a reflection nightmare is by serializing it: How do you do a deep copy of an object in .NET (C# specifically)?
Another could be data validation. Normally when you plan to transfer objects across the wire you create an XML Schema that defines your message structure, you then generate classes from that schema which will turn into objects that you can transfer. Before sending your objects you want to serialize , for example to XML, to preserve the object state, then send that stream of data and on the other end validate your incoming XML message against the schema to make sure it is complies with your pre-defined structure and then deserialize into an object to do any object-oriented manipulation required.