Using Jeff Moden's article http://www.sqlservercentral.com/articles/T-SQL/71550/ about Group Islands of Contiguous Dates as inspiration, you could do the following
;WITH cte AS (
SELECT name,
DATEADD(mm, - ROW_NUMBER() OVER (ORDER BY name, saledate), saledate) dategroup,
saledate
FROM #sales
WHERE quantity > 2
)
SELECT name, MIN(saledate) firstsaledate, COUNT(*) cnt
FROM cte
GROUP BY name, dategroup
ORDER BY name, dategroup