C5 springs to mind, but I'm not sure how fast it is. It has been around for years, and is very stable.
Additionally, List.AsReadOnly() does the job rather well IMO, but unfortunately there is no equivalent for dictionaries or arbitrary ICollection's.