Theory projects: it is helpful to have taken some advanced math courses (eg. linear programming, integer programming, combinatorial optimization, probability theory,...) and/or CS theory courses (eg. advanced / randomized / distributed algorithms, machine learning, graph theory,...).
Programming/Application projects: reasonable algorithms background (eg A in DSA) and strong programming background;
I do consider research for credit, and in some cases for pay too. If you are not ready to take one less course and assign some dedicated time to a project, then you should not contact me for research. That having been said, it's never too early to start research! In some cases you may have to come up to speed on certain tools. The main thing is dedication.
Current Undergraduate Projects:
If you have a project that especially tickles you, I will be happy to help you in any way that I can. I also have some other projects in the general areas:
-- visual web navigation,
-- algorithms for ranking,
-- web applications.