""Bad" is an adjective, so it implies the piano is bad in some way (out of tune, perhaps). "Badly" is an adverb which modifies "plays", which is correct in this case. Presumably her lack of musical skill is the point of the sentence."
I almost hate myself for continuing this, but I can't let it go.
Andrea, it is true that 'bad' modifies 'piano', and if we take the word 'piano' concretely, the sentence thus implies only that the piano is defective in some way. But of course in addition to the ebony and ivory "piano", there is the broader and more abstract "piano" which includes all acts of piano playing, its rich traditions and personalities, repertoire, etc.
Used in this sense, to say "She plays bad piano" is to say she provides us with a poor instantiantion of that instrument's sonic universe.
Admittedly, it is a somewhat folksy locution, and "She plays piano badly" is perhaps more precise, but I stand by my claim that grammatically, there is nothing at all wrong with "She plays bad piano". It and like locutions are a long-standing part of the English vernacular, and if the Grammarians can't keep up, so much the worse for Grammar.