A few things:
No more shared holidays, weekend together etc for a time.
No more 1-2-1 outings with your dh and sil. No way. Tell your husband that you are fed up with it and ask him to keep you company. Explain to him that you find sil overbearing and that you need to spend time with dh and need some space away from her. Remind him that once baby is born, there won't be much couple time left. I wouldn't explain in too much detail all the intricacies of what she is doing at this pit.
Definitely be assertive, not passive aggressive to sil. Now you know what she is like (insecure, manipulative, not to be trusted), you don't need to be nice to her. Polite yes, nice no.
With the photo you might have said:
"sil, don't butt into my picture. When I'm done, you are free to snap away. Wait till then."
Conversation interrupted at the dinner table: actually sil, we are having a nice chat here right now, dh won't want to miss this. Best if you take dc to the toilet this time so that we can carry on.
With your bf, nail varnish etc: sil, bf and I have some catching up to do, why don't you go and paint your nails yourself whilst we take a walk, have a drink, watch tv, whatever whatever...
She sounds insecure, manipulative and a pita. Draw your line firmly in the sand and do net let her cross it.
On a different note, I wonder what sil's husband is up to if he is not really around/available...
Also seeing that her dc will be your dc cousins... Try and use this time together to get to know them a bit, befriend them... Does sil have any time for them if she is busy on days out with your dh?