You cannot do what you want without any compromises.
First of all, you should make your code I<T>covariant in T:
public interface I<out T> where T : Model
{
IEnumerable<T> Results { get; }
}
, , T . ICollection<T> T, Results IEnumerable<T>.
, , , :
public void DoSomethingWithCollecion()
{
var genericCol = col.OfType<I<Model>>();
foreach (var a in genericCol )
{
}
}