I was very dissatisfied when I realized that the MediaLibrary\'s GetVisualizationData() returns a bunch of zeros on WP7. What are the other approaches I could apply in order
Per the documentation (as of the writing of this post):
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.media.mediaplayer.isvisualizationenabled.aspx
"Visualization data is not available on Windows Phone. Any attempt to get visualization data on the phone will populate the VisualizationData class with 0s."
If this is a feature you'd like to see supported on windows phone, you should go to the Connect site and submit an issue. These issues are tracked, and especially if you're able to get community support behind it and get people to vote on it, perhaps it will be implemented in a future release :-)
You'll have to write your own algorithm. It's not exactly easy, but what you're looking for is Beat Detection (this page has some links to get you started).
EDIT: Here is some Java source-code for beat detection from the Mimim library.
I think that I have found exactly what you are looking for. Beat Detection written by JWatte. From the screenshot, its looking very pretty.
Here is a little framework, in Silverlight, that might assist with your project.
Here is a Silverlight FFT and oscilloscopes example.