make your custom shape.
drag your image into that file (this should come in as a layer above your shape layer)
go Layer>Create Clipping Mask.
this will "clip" your image layer to the shape layer below.
You could also use the selection tools to make your custom shape (polygonal lasso etc). Make the shape on top of your image, then go to select > inverse; so you are selecting the pixels outside your shape. Then simply press delete. No you have your image in the shape you wanted!
Hi Sharon, your solution works, but I suggest to try Charles', the advantage of his method is that all pixels are still available, and it is possible to move the image or the custom shape independently, and the visible area will adapt accordingly.
Also, in Sharon's method - "simply press delete" on a regular jpg picture will bring up the Fill Dialog in CS6, with Content Aware being default. Not what you you want here.
If the OP wants to use a selection as a "custom shape", then creating a mask by clicking on the Add a Mask icon at the bottom of Layer panel (third in from left) is preferable to inverting the selection and deleting pixels.
Europe, Middle East and Africa