I need to list every city in a state (for instance, California), along with a huge list of automotive dealers per city. How do I do this on one page without looking like a link farm/spam page to end users?
You need to brush up on your SEO lingo a bit I think.
You won't be considered a link farm because you're not making a link farm. A link farm is a network of websites built for the specific purpose of propping up the link popularity of another website or websites. A directory is not a link farm unless built for that purpose which yours is not (I am assuming).
A spam page is just a useless definition in SEO terms as it has no real meaning. But to assume it means you are somehow using your website to manipulate the search engines then you're fine because you're not doing that, right? There are countless directories that are out there doing what you're doing without issue so why would you be any different?
If you mean spam page from a human perspective then don't fill the page which crappy ads and stuff like that. Make it a useful and easy to use listing. That's the exact opposite of what a spammy looking page does.
So go ahead and build that directory and be successful. :)
JQuery is a good library to brush up on, a lot of super easy shortcuts to hide / show data.
My recommendation would be to use a header directory first, and on click it would show or hide the information that pertains to it (List of cities. Then you click on a city and it would display all automotive dealers in that city. You could include graphics and such to make it look really nice.