Sully's solution will work, but give the score a bias so that the first car to pass the first checkpoint will have a score of 1.5, the second 1.4 and so forth. No two cars can now have the same score. Discard the decimal portion of the score every time you hit a checkpoint as it's only to indicate the order the checkpoint was hit. The formula looks like this:
set score to int(self.Score)+1+0.1*(5-Checkpoint.hit_count)
It shouldn't matter if two cars hit the finish line in the same tick, the winner will be whichever car is processed first and I don't think a player will even notice.
http://dl.dropbox.com/u/5426011/examples14/checkpoint.capx