Wenn Du li so definierst wie angegeben, sind da sowieso nur Elemente vom Typ MyType drin, und li ist dann auch schon ein IEnumerable<MyType>. Falls Du auf einen bestimmten abgeleiteten Typ einschränken willst, geht das mit LINQ, z.B. so (ungetestet, nur getippt):
IEnumerable<MySubType> ie = li.Where(x => x is MySubType).Cast(MySubType);
Wie @Matthias Hlawatsch schon schrieb, ist dein Beispiel sinnlos, weil die Tatsache, dass C# statisch getypt ist, sowieso schon garantiert, dass die Liste liausschließlich Elemente vom Typ MyType enthalten kann.
Falls du wissen wolltest, wie du Elemente eines Untertyps von MyType herausfiltern kannst, dafür gibt es die Erweiterungsmethode System.Linq.Enumerable.OfType<TResult>:
var li = new List<MyType>() { new MyType(), new MyDerivedType(), new MyType() }; var ie = li.OfType<MyDerivedType>();