Windows gets progressively slower over time, why doesn't Ubuntu?
In my opinion most important reason is that most of the programs on Windows are registry dependent. Registry is arguably a well organized storage, however it is not known to be a very efficient one. When you first install Windows, registry size is small and look up operations are inexpensive; however as you install more and more programs registry gets larger and harder to manage.
Another factor is disk fragmentation. NTFS and FAT are very notorious for their inability to prevent fragmentation. On the other hand Linux file systems, especially ext3 (I do not have any experience in reiserFS or other alternatives) is quite resilient to fragmentation.
A short primer on fragmentation
What is fragmentation? This article does a good job explaining it, but the gist of it is this: Windows clumps all of its files together in one place on the disk, while Linux spreads them all over the place. That means that, when a file grows on Windows, it runs the risk of being so big that it overlaps the next file's hard disk allocation, and therefore must either be moved or (more likely) fragmented, with the new fragment being stored on a different place on the hard drive. The next time that file is accessed, Windows actually has to make two disk accesses, one for the initial file and a second for the newly created fragment. When a file grows in Linux, on the other hand, there is ofter more than enough space for it, and the OS proceeds happily along. Linux's method does have a small downside on mechanical hard disks, and that is, because the files are spread all over the place, there is a small delay in accessing them over a series of "clumped" files. The e4rat project works rather well for eliminating or reducing some of these delays (ext4 filesystems only), and the incurred overhead is never worse then what Windows experiences from file fragmentation.
Another factor is a small trick that Windows pulls: A Windows installation is never up when it's up. Windows starts a lot of processes after you log in. The distinction between system processes and user processes is a little vague for Windows, especially for the old versions before XP. And a lot of Windows applications are very eager to start background processes and place tray icons. In time a Windows installation begins starting more and more processes at start up. However Linux strictly starts all system processes before you log in. After you log in, only a minimal number of processes are started. Linux also never encouraged using background services related to specific tasks of a specific user, or using tray icons. Last version of the Gnome denies all applications to place tray icons, except a very narrow white-list. So in time a Linux installation still starts only a limited number of processes after the start up.
I'm sure there are other numerous factors that contribute to this phenomenon, these are the major ones that comes to my mind.
I actually brought this up once to a Microsoft employee who was giving a special presentation on touchscreen technology and how Microsoft planned to approach it, and the best response she could give me was along the lines of "the slowdown in Windows is due to operating system fragmentation, and we're still heavily researching why this occurs and how to resolve it."
I somehow think the difference may be due to how Ubuntu handles package management and configuration versus Windows' methods, though I wouldn't be able to explain that any further. We may never know completely if we don't have access to Windows' source code to explain why it behaves the way it does.
That, and with a new Ubuntu release every 6 months, there may not be enough time in between releases to notice any potential slowdown if you install a fresh copy every time. Or it could also be due to Ubuntu having less bloat, and thus fewer things to go wrong.
Windows gets slower because every application comes with an installer that is not controlled very well. For instance the person writing the install script really doesn't care what their program will leave behind when you remove it, because once you've removed it you're no longer a customer. A more pessimistic person would say they do it on purpose to make you upgrade more often, probably not 100% false.
Also the registry is a huge issue, hopefully this should get a lot better with SSD's but it's a very centralized point of failure and bottleneck. Every time the system needs hardware info it goes to the registry, every time you launch an application it needs to get info from the registry. When it's first installed the registry is as it should be, as Microsoft expects it to remain. But since anything installing is given nearly free reign over what it does to the registry, and there's no mechanism to remove useless entries the entire thing gets crowded really fast.
Ubuntu is certainly vulnerable to slowing down too, although most applications utilize their own .conf files, with the exception of the gnome configuration file shared by some. However, the way a .deb is structured means whatever goes on the hard drive, can be taken off with the right command. And even IF you don't issue "apt-get remove --purge ..." to remove the configuration files, you're just left with a text file in your user directory that doesn't eat up any resources save a few hundred kilobytes of hard drive space. Startup time on Ubuntu can be impacted if you start more services but it employs some tricks, like optimizing where crucial startup components are to minimize hard drive bottleneck. Also, once you're up with Linux, you're up. No waiting for more tray icons to launch.
Essentially the problem is the registry because it introduces a very real-time bottleneck to many aspects of windows.