Creating A Seamless Texture
For this example, the tile will be 64x64. Grab the rock you would like to build your wall out of like this one here I rendered.
Make your canvas larger than 64 pixels and use guides to help you place your rocks.
The first thing I did was resize the initial rock. This is just personal preference at this stage.
Next, copy your rock to fill in space, resizing or rotating as you wish. You want to make sure at least one side extends past your 64px boundary.
Cut off the part on the left that extends beyond the boundary. We won't need that part as this side of the tile will be overlapped by the other side.
Now cut whatever extends past the right boundary and paste it onto the left side (within the boundaries).
You should now immediately be able to see how the sides of our image will tile perfectly.
Copy your initial rock and alter it as needed to fill in any miscellaneous space you want to fill.
Add some very subtle drop shadows to the pieces (individually, not as a whole flattened image) to enhance depth.
With the grid removed and the tile copied two more times, we can see our pile of rocks tile seamlessly horizontally.
If you want your image to tile vertically as well just repeat the same technique we used for the horizontal.