Вы можете ограничить тип конкретным интерфейсом, но не «любым» произвольным интерфейсом.
// This is allowable
public T MyFunction<T>() where T : IMyInterface { return null; }
Это позволит вам передать любой объект, который реализует этот конкретный интерфейс.
Edit:
Учитывая ваши цели, исходя из комментариев, я лично, вероятно, просто вставлю некоторую проверку во время выполнения:
public IEnumerable<T> LoadInterfaceImplementations<T>()
{
Type type = typeof(T);
if (!type.IsInterface)
throw new ArgumentException("The type must be an Interface");
// ...
}