The CheckBox inherits from ButtonBase, which add a class handler for the left button down event (OnMouseLeftButtonDown). As the documentation for UIElement.MouseLeftButtonDown event mentions (emphasis mine):
Some control classes might have
inherent class handling for mouse
button events. The left mouse button
down event is the most likely event to
have class handling in a control. The
class handling often marks the
underlying Mouse class event as
handled. Once the event is marked
handled, other instance handlers that
are attached to that element are not
ordinarily raised. Any other class or
instance handlers that are attached to
elements in the bubbling direction
towards the root in the UI tree are
also not ordinarily raised.
You can play with the ClickMode and set it to ClickMode.Hover, which seems to prevent the behavior you are seeing. However, you might have to then maintain a custom logic in your event handler for this particular instance to set the proper toggle state of your check box.
You can also try the PreviewMouseLeftButtonDown event. However, marking that event as handled in your handler might have side effects on the rest of the MouseDown events - they will carry the handled information, which will prevent other instance handlers unless they are added with AddHandler with the flag for handling already handled events.