How we managed it:
1. First car: cash downpayment, financed the rest. Accounted for loan payments in monthly budget.
2. Once loan paid off, continued depositing monthly loan payment into savings.
3. Second car: used cash + small loan. Repeated 2 above.
4. By 3rd car, had enough cash in account to cover the full cost of the car. Continued to deposit $$ into account for next car.
We do this for vacations, semi-annual tax/insurance bills, car maintenance, etc. as well. We add all those irregular/periodic expenses up, divide by 12, and then transfer that automatically to a separate account every month. You can then true-up the actual vs. expected spend at the end of the year and adjust the next year's transfers accordingly.
This got easier when Quicken came along, btw -- I enter the actual $$ when I spend it, and the monthly deposits are just transfers that don't really count for anything. For one-offs, we categorize those as "Special," so we can see how much the actual expense was but also segregate it from the sort of standard living expenses.
Note: IMO, it is actually helpful to have those periodic big expenses accounted for in your annual expenses, even if it's painful to look at. One of the things we noticed after several years in our new house was that there was always something in the "special" category -- one year a major remodel, one year a new roof, one year a garage, one year a new car, etc. etc. etc. And at some point, when there's always some extra unanticipated cost, it's not really "extra" anymore, is it? So better account for it and include it in future projections.