I make most of my UI elements with Photoshop. Take advantage of Layer Styles to create subtle gradients, consistent highlights and shadows. You can then save your Layer Styles within Photoshop and apply them to any shape in the future, giving you the ability to create buttons and other UI elements in seconds. With CSS3 you can also recreate your mocked up UI elements directly in the style sheet. This is powerful because you no longer have to slice up images and now have the ability to redesign UI elements globally on your site by changing a few lines of code.
Great Article on creating buttons in Photoshop: http://galp.in/blog/2011/08/02/the-ui-guide-part-1-buttons/
Collection of articles on how to create buttons with css3: http://speckyboy.com/2010/02/15/20-css3-tutorials-and-techiques-for-creating-buttons/
Patterns & Textures
I also make my patterns in Photoshop. You can convert any design or graphic element into a pattern in PS by going to EDIT > DEFINE PATTERN. Just like the Layer Styles mentioned above you can save patterns and reuse them on UI elements with the click of a button. In the Layer Styles there is an option for PATTERN OVERLAY where you have the option of choosing from pattern that are shipped with PS and patterns you download or create yourself. The key to using patterns is not to over do it. Use them subtly and build up layers low opacity layers of them.
Great Article on Patterns: http://galp.in/blog/2011/10/04/the-ui-guide-part-2-bg-forms-texture/
Fantastic Resource for repeating Patterns: http://subtlepatterns.com/
Icons are in a world of their own. Time consuming and tough to create, great icons are usually done by talented illustrators. Unless they are pretty minimal and straight forward, I get my icons from the wealth of free resources that are out there. If you are going to create you're own icons though, like others have mentioned, you are probably best suited to do so in Illustrator as vectors are resizable without loss of quality. You can create them in Photoshop though and still have them scalable. Similar to defining pattens, once you make your shape or icon, you would want to go to EDIT > DEFINE CUSTOM SHAPE. Your shape will now be saved into a library that you can access under the Custom Shape Tool. (It's an option under the Rectangle Tool). You can now quickly drag your custom shapes or icons onto your canvas and easily change the shape, size, color in seconds.
Nice Roundup of some free icons: http://www.smashingmagazine.com/2010/11/09/50-free-high-quality-icons-sets/
A great site for a quick one-off icon, just search any keyword and see multiple icons matching your search: http://www.iconfinder.com/
I've only scratched the surface on these three subjects but these should get you headed in the right direction. With the methods mentioned above you will be able to start creating your own library of reusable resources from within Photoshop which should really speed up your prototyping stage.