DynamicModule[{x = True},
Grid[{
{RandomImage[], Checkbox@Dynamic@x}
,
Dynamic[
If[x,(*both DMs are very different and independent,
it should be one or the other, can't plan that in advance*)
DynamicModule[{}, {"-", 1}],
DynamicModule[{}, {2, "-"}]
]]
,
Dynamic[If[x,
DynamicModule[{}, {2, "-"}],
{Spacer[{0,
0}]}(*this row should be invisible without any gap left*)
]]
}]
]