This could be a number of things. The way drupal produces a form usually starts with the menu system. You would declare the form in something like:
function your_module_menu() {
$items['your/path'] = array(
'title' => 'Your Title',
'page callback' => 'drupal_get_form',
'page arguments' => array('your_module_formname_form'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
Then you create the actual form (which from what it sounds like seems to work), inside your function:
function your_module_formname_form($form) {
$form['whatever'] = array();
return system_settings_form($form);
}
and now when you go to your/path, you should see the form you created with a submit button and a default submit handler.
Things to check include whether your form array is properly structured, whether you are trying to override any of the submit mechanism and whether the chain from the menu to the form is uninterrupted and uses the attributes you meant to use.