1. What if the user doesn't have a keyboard?

It's a perfectly valid case. Not only some forms doesn't require interaction with a keyboard (for example a form with a couple of combo boxes, radio buttons and checkboxes), but even if the form has textboxes and textareas, it doesn't mean that at the exact moment of form submission, the user is ready to use her keyboard.

2. Unresponsive UI

When you click on a button with a mouse, there is an immediate visual feedback (unless some inexperienced designer decided to change the visual appearance of the button and missed the mouse down state).

When you press enter, there is no expected and generally accepted visual feedback. If the device is a bit slow and the network is slow too, chances are that the user will spend a few milliseconds asking herself if the form was really submitted.

3. Confusing interaction

Think about how confusing it is. You're in front of a bunch of controls. There is no submit button. What does it mean? Obviously, that the information is committed on the fly, as in a few AJAX-heavy web apps. So you close the page and discover later that all you've done were lost. From UX point of view, it's a bit... unpleasant.

A generally accepted paradigm is that if there is no submit button, the information is submitted on the fly. For example, when typing in Google Search, you get the results immediately. Note that in Google Search, the submit button, a blue one with a white magnifying glass, is still available. It makes sense: while the results are shown immediately, the user may want to indicate to the application that she is confident about the text entered in the search box and doesn't want to see the search suggestions any longer.

4. Limited discoverability

Beginners don't know that a web form may be submitted by pressing enter. By providing only one way of interaction which is neither usual nor documented, you are making it impossible for those users to use your application.

5. Contextual dependency/modes

The submission of a form through the keyboard depends on the context. What happens when the user presses the enter button if:

The active area is a text box? The active area is a text area? The active area is a combo box in collapsed state? The active area is a combo box in expanded state?

Found it? Was it really so intuitive? With a button, no matter where the user was just before, the form will be submitted (unless blocked by JavaScript, but this is a case apart).