As has been stated, your list of exceptions is by no means comprehensive and you will probably find that this often creates more problems than it solves.
However, it's still doable and it was kind of fun to write out the code to do so, so here goes:
"When hitting Enter, if the line doesn't start with a /*, insert a semicolon
:inoremap <CR> <C-R>=match(getline('.'), '\s*/\*')==-1?';':''<CR><CR>
Feel free to expand this regex to capture your conditions above. I didn't want to write all of that out as I feel like it would obfuscate what I was writing and would still not be a complete solution for what your intent is.
You would probably want to only do this for certain filetypes, in which case you'd want to add the
<buffer> argument to this command and do it inside an
autocmd Filetype block.
To disable the mapping, you would say