I do not know if I understood you right. But this runs when you click the button and holds once you start the selection process

Manipulate[
tick;
If[state == "RUN",
tick = Not[tick];
c++;
Pause[.1];
Grid[{
{" I am running now ", c},
{"5", p5},{"2", p2},{"1", p1}}]
,
c = 0;
Row[{" I am not running, waiting for button...... "}]
],
Grid[{
{"Select die to hold"},
{"5", Checkbox[
Dynamic[p5, {p5 = #; state = "STOP"; tick = Not[tick]} &]]},
{"2", Checkbox[
Dynamic[p2, {p2 = #; state = "STOP"; tick = Not[tick]} &]]},
{"1", Checkbox[
Dynamic[p1, {p1 = #; state = "STOP"; tick = Not[tick]} &]]},
{Button["Click when done", tick = Not[tick]; state = "RUN"]}
}],
{{tick, False}, None},
{{state, "STOP"}, None},
{{p5, False}, None},
{{p2, False}, None},
{{p1, False}, None},
{{c, 0}, None},
TrackedSymbols :> {tick}
]
icounter there. Are you planning to store all the results that is why you are using counteri? Or you just want the current result to show? If so, why do you needi? I think what I showed above you should be able to adopt to your code. Only difference is that you using images and random selection of dice. I do not have the images of dice to show. If something still not clear in the code I showed, feel free to ask. – Nasser Sep 10 '17 at 18:24