Per il name sarebbe meglio averli diversi (per facilitare il recupero in out) per gli id devono essere diversi, per capire quante box sono selezionate fai il ciclo for sul input
codice:
<script type="text/javascript">
function checkboxlimit(){
var checkgroup=document.getElementsByTagName("input");
var limit=4//qui scrivi il limite massimo delle checkbox selezionabili
for (var i=0; i<checkgroup.length; i++){
if(checkgroup[i].type == 'checkbox' && checkgroup[i].checked && i > limit){
alert("You can only select a maximum of "+limit+" checkboxes")
checkgroup[i].checked=false
}
}
}
<input type="checkbox" name="tuocarattere" id="tuocarattere" value="romantico" class="checkbox" onclick="checkboxlimit()" />
<input type="checkbox" name="tuocarattere_1" id="tuocarattere_1" value="passionale" class="checkbox" onclick="checkboxlimit()" />
etc...
non l'ho testato fallo tu.