The Displace modifier has the option to displace based on the face's normal, so upwards/downwards relative to the face, same as Z translate based on normal. Is there any way to get it to do an X or Y translate in relation to the normal?
This a type of what is typically referred to as vector displacement, where the displacement map provides RGB values which are used to get displacement along different axes. This displacement can occur along different orientations (or coordinate spaces) of the axes.
Currently, to my knowledge blender only supports local object space (The 'RGB to XYZ' option in the displace modifer, see https://www.blender.org/manual/modeling/modifiers/deform/displace.html). To displace along vectors perpendicular to the normal the displacement would need to be applied in the vertex tangent space. If you are familiar with normal mapping this is very similar to the difference between object space and tangent space normal maps.
Local object space displacement will work fine so long as your mesh does not dynamically deform (e.g. armature modified, cloth sim etc).
I've been looking for an answer to this myself. I found that the following node group works quite well for this, extruding displacement along normals. I found that adding an additional bevel modifier after displacement helps to smooth the geometry, otherwise there are visible gaps between displaced planes.