This is how I do it, in short; Make a skeleton model of the site in simple HTML, no fancy stuff. Then slice up the PSD and make the pieces fit inside the skeleton model. Make corrections to the html and css to make it look as similar as the PSD as possible, when done, go on add the needed WP classes and style them. When the theme layout works and look as intended, go on and add custom functionality. When you think you’re done, test it, and then test it again and again.
Here’s some step by step instructions to convert PSD into your standard WordPress Theme: http://blogcraving.com/free-psd-wordpress-conversion-tutorial
If you are looking to do it yourself, practice and understanding the basic WP core is really all you need. You’ll gradually be able to add more layers and features once you know the basics.