This is another way to go:
Code:
RegisterStateDriver(PlayerFrame, "visibility", "[combat] show; hide")
RegisterStateDriver(TargetFrame, "visibility", "[combat,exists] show; hide")
RegisterStateDriver(ComboFrame, "visibility", "[combat,exists] show; hide")
RegisterStateDriver(FocusFrame, "visibility", "[@focus,combat,exists] show; hide")