This seems to work... there may be a better/more efficient way, I just don't know of it...

Code:
            Dictionary<DateTime, string> SampleDict = new Dictionary<DateTime, string>();

            SampleDict.Add(DateTime.Parse("10/1/2011"), "Alpha");
            SampleDict.Add(DateTime.Parse("10/20/2011"), "Bravo");
            SampleDict.Add(DateTime.Parse("10/13/2011"), "Charlie");
            SampleDict.Add(DateTime.Parse("10/22/2011"), "Delta");
            SampleDict.Add(DateTime.Parse("10/5/2011"), "Echo");

            var subSet = SampleDict.Where(item => item.Key > DateTime.Parse("10/1/2011") && item.Key < DateTime.Parse("10/22/2011")).OrderBy(item => item.Key);

            Dictionary<DateTime,string> results = subSet.ToDictionary(item => item.Key, item => item.Value);

            foreach (DateTime key in results.Keys)
                Console.WriteLine("{0} : {1}", key.ToShortDateString(), results[key].ToString());