Even with a 2.95 GPA you can get into some good schools, having a publication. Study really hard for your GRE though, as that is going to be your deciding factor for the higher ranked schools you apply to when they are choosing between you and somebody else with a good GPA but no publication.
If you have two semesters left, and you have the time (and can afford to do so) re-take one or two of the classes you got bad grades in. This will usually replace the previous bad grade (it will still be on your transcript, but it will replace the grade and raise your GPA back up). I would of course check with your school if they do replace old grades with new ones, other wise, ehh. It is really easy to bring an average down, it is hard to bring it up. Skip bringing it up and remove the low grades!
And do good on the GRE.