Applying to graduate schools can be a daunting task. Be sure to begin planning early, at least by the end of your penultimate year of undergraduate studies. Some things to keep in mind:
PhD programs are available at most research universities, though there are no popular centralized directories of programs. Moreover, each school will have its own application format, which is usually through a central university application system. Mathematics department webpages will have instructions on how to apply; here are UVa's instructions.
Applications usually need to be submitted by mid-January, offers are made February through April, and final decisions need to be made by April 15.
PhD programs will waive tuition and provide a living stipend, though master's programs generally will not. Be wary of any PhD program that offers admission but no financial aid.
Be sure to establish good relations with several faculty members who will be able to write recommendation letters for you; the earlier you start on this and the more they get to know you, the better. As unfortunately elitist as it sounds, the opinion of more senior and more prominent faculty carries more weight.
Be sure to acquaint yourself with the admissions requirements of each program, and particularly which programs require standardized tests.
If you are a US citizen or permanent resident, apply for an NSF graduate research fellowship.
Get advice from your peers! Fill out this form to be connected with your peers through MAPS@UVa. Reading examples of alumnae and your peers' application essays and CV's can be especially helpful.
This advice applies to programs in the US. Programs outside the US will have different procedures.