At Zemanta we have been doing two-weeks sprints for the past two years. Two weeks sprints are fine if you know what you should be doing (e.g. you're just optimizing existing service), but are just too slow for intense product discovery that we are doing right now. Consequently, we started doing weekly sprints to gain some additional agility while keeping at least a bit of organization and structure. While weekly sprints give higher pace to the team, they also elapse quickly and don't have much to show for themselves. To give our work some higher meaning and tangible goals we have started grouping weekly sprints into larger units that we call a (development) push. In many regards a push match quarterly cycle of extreme programming, only that it lasts just 6 weeks (approximately) instead of 12 weeks and that it doesn't need to be aligned with seasons of the year.
I always found extremely important to give rhythm to my work. While scrum practices are very valuable at giving rhythm to the team on the daily and weekly level, scrum falls short on a larger scale. Doing a sprint 43, for example, is not very motivating, on the contrary, it's almost depressing.