Ok, I figured out my problem, which was related to String.Format() not to conditional formatting or handling the OnItemDataBound event in the repeater.
It seems the String.Format() method requires that you cast your argument that you want to format:
String.Format("{0:0,0}", Convert.ToInt32(myString))
This is about the dumbest way I can imagine to implement the Format method. I don't know why the hell it doesn't just cast whatever object you pass in to a string, try to apply to format, and if it is successful return the formatted string, else throw an error. This is how you would intuitively expect it to work!
As an aside, here is the link to how to do conditional formatting to a databound repeater:
http://support.microsoft.com/kb/317582