A simple way would be to just convert to a queue and dequeue until only the number of items you want to skip is left.
public static IEnumerable SkipLast(this IEnumerable source, int n)
{
var queue = new Queue(source);
while (queue.Count() > n)
{
yield return queue.Dequeue();
}
}