I don't know that it's prying; but my cart script is 177 long lines, and a bit hard to find an example without posting the whole thing, plus it's not exactly the same problem you're having.
The essence of your problem is that you've only got one variable for $color to be passed, so, as you have noticed, you can only get the last.
My suggestion was simply something like this (and it's a real hack job...):
$x=0;
while ($checkboxoptions = mysql_fetch_array($colors) ) {
$id2 = $checkboxoptions["color_id"];
$color_name = $checkboxoptions["color_name"];
echo "<td><input type=\"checkbox\" name=\"color_id$x\" value=\"$id2\">$color_name</td>";
$x++;
}
And then, on the handler script, you have to loop to test for those values....