Yeah, waypoints are the way to go.
A good way to manage waypoints is distance - say you had 100 waypoints, like a pearl necklace around the track. You'd have a current waypoint, and check for the car being inside a set distance. When the checkpoint is reached, you go onto the next waypoint. This can be used for AI to an extent, you would have to use secondary path finding too.
Using this method you could also detect corner cutting, going the wrong way, etc etc because you can check if the distance between the car and waypoint is growing (going away from) or shrinking (getting closer to). To guage the track distance, you have the current waypoint of each car - and can calculate the distance from the current waypoint - if 2 cars are heading towards the current waypoint, the closest car is in the lead.
You'll probably have to use some sort of system, maybe having inbetween waypoints to aid the AI, because it could be easy to loose track when theres a section of track with uneven waypoints.
Recently I used a similar system to take a tour of a memblock tunnel, and it worked quite well for that - I was able to use better waypoint detection, because your always going forward - you check the distance, if the distance shortens then your heading towards it, if it lengthens then your past it, I just wait till the distance lengthens then go onto the next waypoint. Practically impossible to miss one - unfortunately this would'nt work with a racing game because your moving forward and back. Might give you an idea for better waypoint detection though.
The waypoints can serve more than AI and position detection though - they could be used to tell the player what degree of corner is comming up, speeds to take the corners etc.
One last thing - if you need to discover what waypoint the car is at - you could just check the distance between the car and all the waypoints, that'll tell you the closest one.
Van-B

The nature of Monkey was irrepressible!.