There are several ways you could accomplish what you want - transition rules or workflow logic, and you could have different lists being assigned dynamically to keep the unwanted options away from users. When using the logic you are working on you need to remember to exit from the function after returning False, then return True at the end of the function for all other cases.
I suggest you move the logic to Bug_FieldCanChange and try something like this:
Function Bug_FieldCanChange(FieldName, NewValue)
If FieldName = "BG_USER_03" AND (NewValue = "60 Cancelled" OR NewValue = "70 Closed") Then
If Bug_Fields("BG_USER_03").Value = "30 Ready to test" Then
Bug_FieldCanChange = True
Else
Bug_FieldCanChange = False
Exit Function 'Necessary to avoid returning True at the end of the function
End If
End If
Bug_FieldCanChange = True 'Default return value
End Function