Yep, the another option is that the big projects (Kernel, X, Mesa, KDE, GNOME, etc.) will collect funds and suggestions from users.
I can suggest to X, Mesa and Kernel teams that further development of opensource radeon drivers and I'd like to spend my money to that development. For example, there are 50 users that want further development of radeon drivers. We send our money to X, Mesa and Kernel teams and so creating the fund for radeon drivers. In turn X, Mesa and Kernel teams organizes a special contest like GSoC and XorgEVoC with special emphasis on radeon drivers.
Such a strategy is more flexible, I think. First of all, mentors from the big projects can formulate an appropriate task for each developer. Also they can control the development process and the quality of code. Also they can evalute the suggested project.
Yes, I know that donations are possible for (almost) every big project or even to special organizations (like SPI,
http://www.spi-inc.org/), but I think that the existing donation system should be improved. Yes, I like to donate my money for X, but not for everything in X, I like my money to be spent for radeon drivers. And so on...