Hi,
Doing
for param in backboneNet.parameters():
    param.requires_grad = True

is not necessary as these parameters are created as nn.Parameters and so will have requires_grad=True by default.
You can also replace loss = torch.tensor(0.0).float().to(device) by loss = 0.
Your code otherwise looks ok, the backward call should backpropagate in all the network.
Why do you think this does not happen? What is the print_backprop function doing?