The only problem with <optgroup> for the op’s requirements is that it has a fixed space between the groups. I doubt you can use css styles to change the space if you wanted a larger or smaller space than the default.
I can’t think of a way to style a space between options. As a last resort you can always create your own customised “select” by using <ul>. You can easily add space between the <li>'s using css margin.
I would add client-side code to disable the submit button when that option is selected and to enable the submit button when any other option is selected. However, you should also back that up with server side validation to be sure that people browsing without JS don’t slip through the cracks.