1. Good math skills helps and perhaps provides an advantage but I think that good analytical skills are more important. If you can think a problem through logically, then you will likely be a pretty good programmer....some math on top of that will probably make you a better programmer.
2. Perhaps...but I was an Art/Music major in college and I think I am pretty fair at programming. Again, I think the key is to be a natural problem solver...if you get some formal training on top of that it is icing on the cake. (btw, I am in the process of going back to school to get that formal training...it never hurts to learn new things.
3. Since I don't have much formal CompSci training, I don't feel qualified to answer that for you..I have programmed in a few languages and as most, tend to gravitate to what I am already comfortable with and know....I think someone with a more formal training in Computer Science who was exposed to a larger variety than I could answer better ;-)