Method names starting with _ are reserved for Apple private use so I would suggest renaming the _setMainThread method to make sure that you aren't overriding something in Apple's implementation on NSThread. (http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/chapter_950_section_11.html)

Also, as Apple might implement methods called -isMainThread and +mainThread in future versions of Mac OS X I would call them something that Apple wouldn't.