Forgive me if this has been brought up before: I only skimmed the latter comments. However, I didn’t see anything like this.
Perhaps I miss the point somewhere, but wouldn’t the best way to do gradient be simply to have them as a colour-value? We could have a gradient “function” as a colour-value which then can be applied to either ‘background-color’ or ‘color’. I’d suggest it would take as parameters the “origin” of the gradient (where the first colour starts, ie. ‘bottom’, ‘top-left’) and two or more (for extensibility) colour-values other than a gradient with CSS3 UAs only required to use the first and last it can understand.
You wouldn’t have the fine-grained control of a whole mess of properties, but you could reuse many of the properties currently in CSS3-Background like ‘background-size’, ‘background-position’, background-repeat’ and ‘background-origin’. Plus you have easy gradients for text (though not all kinds of gradient would work well for text, but that’s not the point).
If people then want more control over gradients, one can always cook up ECMAscript methods to parse gradient values to change/extract specific bits.