How to create checkbox instead of radio for just 1 allowed value? Because of this major Drupal 7 bug (http://drupal.org/node/811542), I cannot use radio options in my form.

I have three options in my form and I want them to be checkboxes, but the user can only select one checkbox.  By Drupal 7's auto form design, it converts single value items to become radios.  How can I get the below to become checkboxes that users can only select one without having to write my own module to override the form?

beef|I prefer beef

chicken|I prefer chicken

veggie|I am a vegetarian
Since checkboxes are multi-value options by nature. It would be detrimental to usability to override this default and expected behavior. You could change the validation as jimajamma suggests, but this would definitely lead to mass confusion amongst your users, as checkboxes are specifically intended for use for multi-value selections. 

A slightly better, but still sub-optimal, option would be to use javascript to make sure that only one checkbox option is selected. Using javascript would at least mean that  users have immediate feedback rather than finding out after submitting the form (and it failing validation) that the completely expected behavior of multiple values for checkbox form items is no acceptable in this situation.

Since the Drupal core issue that you linked to specifically refers to sets of radio options that are not set as required, why not re-phrase the radio options so that you can make the form item be required?

For example, instead of the three options

beef|I prefer beef
chicken|I prefer chicken
veggie|I am a vegetarian


create a forth option,

none|No preference
beef|I prefer beef
chicken|I prefer chicken
veggie|I am a vegetarian


and set that fourth option as the default. In this way, you can successfully work-around the existing Drupal bug without confusing your users with non-standard behavior of form items and without creating any additional work for them. Not only is this better for users, but it requires no code customizations and is more easily maintainable (and easier to change once the bug is fixed).

In a situation with a yes/no question, you could use checkboxes and only provide one option, "Yes." Then you could evaluate "Yes" in its unchecked state the same way you would have evaluated "No" in its checked state.