Para mim, esse era um problema de referência circular.
A resposta aceita não funcionou para mim porque ela apenas altera o comportamento do formatador JSON, mas eu estava recebendo XML quando chamei o serviço do navegador.
Para corrigir isso, desliguei o XML e forcei apenas o retorno de JSON.
No arquivo Global.asax, coloque as seguintes linhas na parte superior do seu método Application_Start:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
Agora, apenas resultados JSON serão retornados. Se precisar de resultados XML, você precisará encontrar uma solução diferente.
InnerException
propriedade da exceção de serialização para descobrir o que exatamente causou a falha da serialização.