Hm, there are different ways to solve all that. Maybe it gives you an idea looking at a screenshot of an editor I wrote for an racing game a few years ago:
http://www.michaelzeilfelder.de/Pics/editor.jpg
The outer lines are planes around the whole track to find out when a player left the track completely. So I do checks if the players are inside of all those planes all the time.
The dark blue lines give me the width of the track - calculating those was a little bit tricky, so maybe easier to write an editor where you can manipulate those vertices if you have no idea how to do that automatic.
Finding the position can be done either by checking how many blue lines have been passed. Or, probably better, finding the closest point to the center-lines of the road for each player. And then you need a function that tells you on which road-part that part of the center-line is (note center-lines are just an array of lines-segments - Irrlicht's line classes have functions helping you to find collisions and nearest points).
Finding out right direction is basically that you never should pass planes behind you again - or never go backwards on the center-lines.
Lap-start is just a special line. But make sure you also check that a sufficient number of other lines has been passed between (but also allow some shortcuts maybe). It's a little playing with numbers to get that right, just avoid that people simply circle around the start-line :-)
The pink arrows in that shot are something like save-points. Once you pass one of those and crash you will be put back on those.