In postgis ST_Node should break a series of lines at intersections, which should solve the non-noded intersection problem. Wrapping this in ST_Dump generates the composite array of the broken lines.
Slightly related, there's an awesome presentation (PostGIS Power) out therePostGIS: Tips for Power Users which clearly outlines these sort of problems and solutions.