You could make the text behind the checkbox invisible with conditional formatting, but hiding the actual checkbox would need vba.
Add a new conditional formatting rule to check if the data cell is empty, i.e. =D1="" (change D1 to the reference of the data cell.
Set the text colour to white (or the same colour as the cell background).
Make sure that this rule is the first in the list and that the 'stop if true' box is ticked.
It is, more specifically, you would need a worksheet change event, something like this.
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(0, 0)
ActiveSheet.Shapes("CheckBox1").Visible = (Len(Target.Value)>0)
ActiveSheet.Shapes("CheckBox2").Visible = (Len(Target.Value)>0)
The code above shoud hide checkbox 1 when A1 is empty and make it visible when A1 is not empty, then the same for checkbox 2 and B1. More can be added as needed.
Note that the code will not 'correct' the initial state of the checkboxes, if they are already visible while the corresponding cell is empty. In such cases you would need to enter something into the cell, then delete it for the code to be triggered.