Как запретить десериализацию объекта с Json.Net?
Попробуйте Required:[JsonProperty(PropertyName = "start", Required = Required.Always)]
public long? start { get; set; }
Либо проверяйте значение ключевого поля (или полей), если значение null, считайте что десериализация не дала результатов (outRequest = null).
Ключевое поле - это поле, которое присутствует всегда и не может иметь значение null.
Если зацепиться не за что, то можно и по всем пройтись:if (!outRequest.start.HasValue && !outRequest.finish.HasValue && !outRequest.template.HasValue)
{
  outRequest = null;
}
По идее, если  у ключевых полей использовать тип отличный от Nullable (например, long вместо long?), либо совместно с атрибутом Required.Always, то при десериализации должно выбрасываться исключение, если нужные поля в данных не будут найдены. Исключение можно перехватывать (try-catch) и таким образом понять, что входящие данные неверные.
Еще можно сделать пользовательский конвертер - JsonConverter, но это может быть сложным решением, в плане «энергозатрат» :-)[JsonConverter(typeof(ORequestConverter))]
public sealed class ORequest
{
  [JsonProperty("start")]
  public long? start { get; set; }

  [JsonProperty("finish")]
  public long? finish { get; set; }

  [JsonProperty("template")]
  public int? template { get; set; }
}

public class ORequestConverter : JsonConverter
{

  public override bool CanWrite
  {
    get
    {
      return false;
    }
  }

  public override object ReadJson
  (
    JsonReader reader, 
    Type objectType, 
    object existingValue, JsonSerializer serializer
  )
  {
    if (reader.TokenType == JsonToken.Null)
    {
      return null;
    }

    var target = (ORequest)Activator.CreateInstance(objectType);

    serializer.Populate(reader, target);

    if (!target.start.HasValue && !target.finish.HasValue && !target.template.HasValue)
    {
      // необходимые поля не найдены или имеют значение null
      // возвращаем null
      return null;
    }

    return target;
  }

  public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  {
    throw new NotImplementedException();
  }

  public override bool CanConvert(Type objectType)
  {
    throw new NotImplementedException();
  }

}
Атрибут JsonIgnore?