Mm, if the OutSim packets are the only data you can get from DiRT2 then I'd probably try it something like this:
* For each track define the start-finish line coordinates. Also setup a set of points at a specific interval on the track - say every few meters - and give each point it's own id number. You can use these to determine the vehicles current position on the track.
* Store the current x,y location and heading for each vehicle, the number of laps and the point they've just passed. Everytime they pass the start-finish line increment the number of laps.
* To display the positions in a table it's just a case of ordering the list of players by the number of laps and which point they've just driven past. For any 2 vehicles on the same point you can compare their coordinates and heading vectors to determine whos in front.
It does mean that you'll need a fair bit of information about each track.
There are a couple of other solutions to the same problem. For example you could instead split the track into sections and record their rough direction of travel for each section. For example on a hairpin you might have 3 sections, and on a straight you'd have one. You could then record how many laps they've driven and what section of the track they're in. For each section you just compare the vehicles coordinates in context of the expected heading to determine the positions. That's probably less accurate, but it could well be quicker for long tracks that get people spread out very quickly. For tracks where people stick together it could be a lot slower as you'll be frequently checking coordinates rather than points.
Hopefully that's given you a few ideas?