I worked a little bit more on this after typing the question, and came up with a solution that works. Here's the code I ended up including in the NSTextView's delegate method, textViewDidChangeTypingAttributes:(NSNotification *)aNotification.
NSFont *font = [[[self manuscriptTextView]typingAttributes]objectForKey:@"NSFont"];
NSFontManager *fontManager = [NSFontManager sharedFontManager];
if ([fontManager traitsOfFont:font]==NSFontBoldTrait)
{
[[self writeBoldButton]setState:1];
}else{
[[self writeBoldButton]setState:0];
}