While the idea of programmable gradients is great, using them is seriously messy. Even in perfect-browser-utopia, gradients are consciously limited to rudimentary linear or radial application. You certainly can’t combine them, or make them contour a shape or anything useful like that….
In short, [CSS gradients are] a blunt instrument with cranky syntax and patchy support.
Alternate title to Alex’s article: “SVG Might Be a More Extensible Alternative.” Read on for solid tutorial on using SVG for gradients (though, admittedly, it’s tough to envision SVG as an alternative for something as simple as button gradients).