I like to use IEnumerable for all return types - and I implement them with List in the method that returns it if they are simple, or a more specialized concrete class if I need to. The advantage is, I rarely, if ever need to change the client of the class implementing IEnumerable. I don't care if it is a List or a Hash table. With IList, you're stuck using a List.
However, if you're using LINQ-to-SQL, or you are working with large amounts of data in your class, IQueryable supports some methods IEnumerable does not. IEnumerable is the base implementation of ILIst and IQueryable, so that's why I recommend using that as your return type from most functions
Check out these articles for a good explanation of the difference between IQueryable and IEnumerable:
Returning IEnumerable<T> vs. IQueryable<T>
and
What is the difference between IQueryable<T> and IEnumerable<T>?