Heres how i might do it...

Set up your AI driving points around the track - these are joined by lines, and you need functions do be able to get the position on the line at a given distance from each point. You will also need to be able to get the distance from each point and the distance from the desired position (on the ideal driving line).

What do drivers do? Steer, brake and accelerate... these functions need to be accessible by the AI.

Calculate which way they need to steer to move closer to the desired position (which will change every time they move)...
Desired position is the distance from the next AI point to the car, but measured along the ideal racing line (and maybe altered to 'look ahead' slightly, reducing the distance measured)
Direction can be calculated via a 'get angle to point' function or dot-product or something similar.

The steering factor should be given in an amount (x > 0 < 1) or something so you can tell how hard the car has to steer (further away = more steering needed).

You then need to find out the steering factor for: obstacles, other cars, and desired road position (to allow overtaking )

Finally, add the steering inputs together, weighting each input according to its importance (if a car is within 2 car lengths, car collision input might be more important than track steering input, likewise if the car is near a AI point, track steering maybe more important than the others)

This will result in a VERY simple neural net type AI. Further improvements may include 'fuzzy' logic, where at distance the desired points and input become 'blurred' - instead of steer left 0.21 units, it may be 'steer left a little bit', leaving it up to the AI to randomly decide how much a little bit is, this will introduce humanlike behaviour in the driving. also, when calculating AI point position, add a random factor influenced by distance... the more distance there is from the point concerned, the more inaccurate the returned point maybe.

Sorry if all this is confusing, and sorry if the topic is dead
I love AI stuff however, and often the concepts are hard to put in clear words.

Oh yes, and to add uniqueness to each driver, try altering the following variables (much like real drivers) - reflexes, accuracy, aggression, and the weighting of each input.

Mix that with cars with different abilities (Acceleration, braking, steering, grip, top speed) and you should have a wide variety of racers!

Oh yes (another one...) swap the collision steering factor for cars behind the driver and the AI drivers will try to not let you pass!

lief