What about using an overload that way if it is passed in as something other then a valid DateTime object it will get treated by the overlaoded method and there you can try parsing it manually:
[WebMethod]
public ReturnList GetList(string id, string fromDate)
{
// overlaod
// your parsing logic
}
[WebMethod]
public ReturnList GetList(string id, System.DateTime fromDate)
{
// Original function
}
Worth a try ... hth