Like "Learn Foo in 15 Minutes", or "Foo for Dummies", "Foo Annoyances" is a great title. Almost like "Foo Sucks". "Linux Sucks". It has a ring to it.
Here is my short list:
Hardware vendors that sell more hardware because new hardware never comes with drivers for older Windows, and newer drivers aren't created for old hardware. This creates business incentive to keep hardware interfaces secret, locking Linux out.
Monitiring CERT waiting to hear that X is exploitable and I need to upgrade.
Linux programmers who don't give a moments thought to portability. Linux isn't the only kid on the block, and like the Solaris/HPUX/AIX/etc wars, all of the Unix venders would collective be much stronger if they cooperatored rather than tried to lock people in and segment the market. Stop including stuff from /usr/include/linux/* if you don't really need to! It doesn't make it work better on Linux, it just makes it a pain to port to other things.
Bloatware. Apache is bloatware. KDE is bloatware. BIND is bloatware. Giant executables aren't the Unix way. That make it hard to get under the hood of something and dink with it. Most dinking done on Unix is done without ever touching source code. Users quickly learn the ins and outs of things and get a feel for their inner psyche just because the plumming is exposed. If X had been designed today, it wouldn't have been client/server. X is argueably bloatware. All of the drawing arcs stuff turned out not to be needed in modern use, and are now legacy stuff. The only way to effectively deal with legacy baggage is not to bloat. Mozilla seems to get buggier in each new release, and the features added are things I don't want. Quality and simplicity have been more a definition of Unix than any other single.. things. This is being lost. More code means more bugs, more exploits. After being a novice for a while and playing with every new toy, people tend to settle in to a reasonable compliement. I use amiwm. Lot of people use fluxbox and the like. KDE itself is an annoyance if it is going to suck up RAM and crash.
People who want you to join mailing lists. Half of the mailing lists I'm begged to join turn out to be dead. The others are off topic, save for a few, which are extremely high traffic. Okey, nothing to do with Linux. I've lost all sense of scope =)
Lack of a standard light weight database. Datacenticism is a revolution. We're seeing database filesystems, logging to database, database this, database that. JET serves MS well. This is up there with cut and paste -- applications should be able to count on a little more of a standard base, otherwise they are free to choice whatever prerequesites they want and a system will wind up with the same idea implemented 40 ways. Poor standard base. Oft cited. Perl has this problem too.
Security. More of an effort is made not to make mistakes, but nothing progressive is done. IBM Japan's excellent bounds checking patches are being adopted by OpenBSD. Logging is useless. A system should do the Tripwire thing by default. Replacing key utilities isn't something an operating system should just ignore. Secure hashes or something should stand in the way.