I didn't test, but this may work. It is finding the max value in the table, and then finding the max value that is less than that, and doing it one more time again. Note if the 3rd highest value has the max value too this query wouldn't indicate that. That may or may not be what you want.
With sybase (and possibly other db's) you could use set rowcount, and order by desc. The 3rd row would be your value.