A field has a cardinality property (meaning how many values it can have) and a type property (meaning what general sort of form element to use).
I say general because the field object itself does not dictate the exact widget. That is controlled by
options_field_widget_form() (docs here) which takes the field object and works out whether to use checkboxes or radio buttons based on the cardinality.
So yes you are right - examining the field object won't tell you which type of form element will be used, but you can assume it from the cardinality (so long as no-one has overridden
Multiple cardinality gets checkboxes; single cardinality means you are only allowed one choice, hence a set of radio buttons. By the way 1 and -1 are not the only possible cardinalities. -1 means unlimited. A cardinality of, say, 3 will also get a set of checkboxes.