I love programming. I began with AppleScript in elementary school and progressed through PHP to Ruby and eventually Python. I've dabbled in Haskell. When I find the time and energy, I work through Project Euler puzzles and MIT Intro to Computer Science and Programming on OpenCourseWare. I want to make this my career. MIT has been my dream since early childhood.
And I'm terrible at math. My brain doesn't process numbers or shapes very will, and in algebra, I tend to make silly mistakes. As a result, I am not in the highest "normal" math track for juniors, but in a slightly easier (not remedial, but not advanced) course and earning straight A-minuses and B-pluses. It's been like this since elementary school. This doesn't seem to bode well for acceptance to a high-quality computer science program.
I don't believe this hurts my ability to program. My abstract reasoning skills tend to be exceptionally sharp; I enjoy and succeed (A to A- level) in AP Chemistry and take an honors english course. I can model a complex system in my head and figure out what it entails. I can see processes and how they can be improved. And, from my time on HN and Wikipedia and ceaseless questioning as a young child of my dad (a news editor with an encyclopedic knowledge of pretty much everything) I am familiar with a fair amount of information, giving my classmates the impression that I am "smart."
But the B+ in precalculus disagrees. What gives? Is there something I can do to get better at math? Am I just not working hard enough? Or do I need to reconsider my identity as a programmer?
You said MIT is your dream: presumably you want to go there for computer science. I'm a student at UChicago, minoring in computer science. Depending on which school you go to/end up at, you'll realize that there are a number of different approaches to teaching CS.
UChicago's CS program is basically an applied mathematics major with some theoretical content thrown in in kind of an ad hoc manner. Let me tell you, it's not the best place to go if you want to learn how to build things, nor how things are built. It's really good for math geeks. (I use the term "geek" affectionately here.)
My advice should be taken with a grain of salt, but you might consider CS degree programs which focus more on software engineering and practical applications of computer science, than on comp. sci. itself. But again, the scope, requirements and course offerings of computer science programs vary greatly between institutions.
Good luck with MIT!