1. Know C, C++ (I can tell you from experience that jumping in on the deep end of 3d coding is tough--tried it, now I'm back to learning the basics, so as not to miss all the tricks and such--if you can, take a class, where you can interact with people on your level on a daily basis, or get to know some professionals--just my opinion. Tutorials can only take you so far, if you want to travel off the beaten path a little you gotta have access to the pro's (there are some 'round here, but few will sit down with you and your code for a long debug session like a good instructor will) You'll get a lot more in depth info from a class as well. Coding can be BOOOORIIIING, so be prepared for a lot of dry math and long hours at the keyboard, especially if you want to create something new. I'm just starting as well, but I guess before I exit Uni I'll have to actually write a compiler, so I think I'll be of a sufficient proficiency at that point to do some cool stuff.)
2. Know calculus (helps with coordinate systems, matrix manipulation, rates, etc. There are many who jump in and can understand the basics of things like the world matrix and what it does in a general sense, but it's tough to actually understand the "big picture" of why things like that work the way they do without practicing the basic parts a little first---"Why is does that sine show up in there?").
3. Know physics (helps with collision detection, acceleration, defining gravity, etc.)
4. Get these books, you'll refer to them constantly:
http://www.opengl.org/developers/documentation/books.html#refman
(also available at Barnes and Noble--They're about 50 bones, but they're worth every penny)