As mentioned, the numbers in your html form can go. (They don't break the code, just more work than is necessary.) However, the  after Category in each line must stay or only the last checkbox checked will be passed. (As written below, using implode, it will also say "Bad arguments".
The true problem is that you were referencing the "container" (array) instead of the data elements themselves. That was fixed with implode.
I've tested this code and even explicitly bombed the program by removing  from original html code...leave them in.
If you require at least one box checked, the customer didn't do it...handle it with your code...
echo "You must select at least one type, etc..";
The new user ID is requesting access to: ".implode(", ", $_POST['Category'])."
Just to test...