The federal government gives out the most. To qualify, students and parents must fill out the Free Application for Federal Student Aid. (FAFSA). Most federal grants, such as Pell grants, are awarded strictly on the basis of financial need. But some new programs, such as the Academic Competitiveness Grants and Smart Grants, are awarded to low-income students who also have good grades. State governments give out lots of money, too. Some states, such as Florida, New Mexico, and Tennessee give out grants solely based on grades. Others, such as California, give out money based on financial need and grades.
Universities give out lots of their own money. To get any money from a school, students usually have to at least fill out a FAFSA. Many schools also require students and parents to fill out the CSS/Profile. Many others will simply award a "merit" scholarship, regardless of the student's financial situation, to students with top grades, test scores, or other in-demand skills or talents.
Many nonprofits give out free money. Some require students and parents to document their financial need by filling out the CSS/Profile. Others require their own forms, or essays, or other projects. Your high school counselor and college department head are likely to know of the local, less publicized programs that offer you the best odds. But you can try searching on the Web at sites like Scholarsite, College Board, Dollars for Scholars, and this list maintained by a Ph.D. named Paco Tomei.
Some employers provide education assistance to their employees and to the children of their employees. Some unions and professional associations also provide assistance to their members or the children of their members. And some companies have "scholarship contests" that are often also clever marketing campaigns, such as the Duck Tape prom outfit contest.