You have already had one suggesting which apparently you ignored. Paul's code seems fast to me. The only possible issue with it is that it pukes if your selection happens to include the final paragraph mark.
You can try:
Code:
Sub ReverseBoldII()
Dim oRng As Range
Application.ScreenUpdating = False
Set oRng = Selection.Characters.First
Do
oRng.Font.Bold = Not oRng.Font.Bold
Set oRng = oRng.Characters.Last.Next
Loop Until oRng.Start = Selection.Characters.Last.Start
Application.ScreenUpdating = True
End Sub