I know where your are coming from, and I can understand being discouraged. I myself, and SEVERAL people I know felt this way about half way through. We didn't consider changing majors, but we were definitely discouraged. Your right there in the thick of it actually. The math is easily one of the hardest parts of any engineering degree. I flew through Cal 1 and Cal 2 and then got killed in Dif. Eq., and outright applying it to problems from the ground up, is still not the easiest thing in the world.
If you really love what your doing, would it be possible to lighten the load a little? Reduce by three hours, or more, possibly?
Does your dept., either engineering or especially math dept., have tutoring? I used tutoring for C++, but it helped greatly. I managed to push through the Dif. Eq., but I NEVER, and still don't do well with programming at all. This tutoring helped immensely, as the professor I had was a complete jack-ass that assumed everyone in there should already know the fundamentals to C++, when the class was about 50/50 CS to EE. Most of us didn't even know what O.O.P. was.
Point, don't let a professor discourage you.
Find a way, it will get easier, not much, but easier.
If it is what you love, stick with it man.
I would also HIGHLY recommend an internship, a GOOD internship. It will give you a great idea of what is to come, and possibly provide a ton of inspiration to you for the future. GOOD, meaning, do massive research and talk to other people who have had the same internship, and make sure your not just going to be pushing the mail cart around for three months.
As far as other options, related to CS, I believe there is major related to Information Systems and Quantitative Sciences. I know nothing about it as everything I study is electrical, but I do know it is loosely related; however, this strictly depends on what your school has to offer.