Kyung-
I don't know what could be wrong. If you re-post the latest version of your code, maybe something will hit me. I tried this in VBA a couple years ago and gave up, so I share your frustration. Just got it working in ArcGIS 10, .NET, VS2010.
2 more things you could try:
1. set the .Application property before anything else:
[INDENT]Set pTableWindow.Application = Application
Set pTableWindow.FeatureLayer = pFeatureLayer
[/INDENT]
2. verify that you have the TableProperty for the correct Featurelayer, check it's FieldOrder before, and again after you reset it:
[INDENT]
' Re-order the fields
Debug.Print("TableProperty FeatureLayer: " & pTableProperty.FeatureLayer.Name)
Debug.Print("TableProperty Original FieldOrder: " & pTableProperty.FieldOrder)
pTableProperty.FieldOrder = "OBJECT_ID, UFI, MF, NT, UNI, LAT, LONG"
Debug.Print("TableProperty Revised FieldOrder: " & pTableProperty.FieldOrder)
[/INDENT]
The newer interfaces, ITableWindow2 and ITableWindow3, take an iLayer instead if iFeatureLayer; I think those were added in 9.3 and 10.0.