I've seen the casting issue before. It seems to be something about the way the .Net runtime handles types from assemblies other than the calling assembly. As far as I am aware the XmlSerializer doesn't appear to be affected by this shortcoming, but the SOAP and Binary formatters are. Also keep in mind that Binary and SOAP serialisation require some reflection permissions not normally granted under medium trust and may cause you problems on the server (the XmlSerializer only serialises public fields, but may still have some permissions issues).
If you're going to use XML in the value of an HTTP form field, you're going to want to encode it using HttpUtility.
Generally speaking, I'd question your method and advise you to investigate some ASP.Net MVC tutorials, but without knowing more details I'll bite my tongue.