Push buttons, radio buttons, check boxes, select boxes, and text inputs. That's the controls HTML allows us to use to interact with our users.
Slider control meant to let users select values from a range of options.
What format should this date be? What weekday is the 15:th of august? A good date picker helps the user answer those questions and makes filling in dates much more delighful.
Smart text boxes
It's easy to make some text boxes only allow certain kinds of characters. Why allow letters in the age field?
Mixing text inputs with select boxes
Allow users to both input text and pick common options.
Drag and Drop
Users are used to dragging and dropping things from their operating systems. Letting them do the same on the web makes for a great affect! Don't forget about a fallback though, not everyone uses a mouse (A buy-button is enough).
Collapse and expand control
When the title attribute is not enough. Use images, fine-tune the delay, make them sticky if you click them, it's all up to you!
Autosaving form fields
Controls affecting each other
Search-based or structured navigation
Sometimes new navigation schemes can be useful. Using search instead of navigation is an interesting idea. Another is letting the user pick categories and using them in search.
Better looking form fields
Sometimes you want drag and drop in a more controllable manner. Why not use it to make it easier to sort your lists?
That's all! Hope I've given you some ideas of widgets/controls you can use to enhance user experience. Good luck!