.rtfd are just bundles of a TXT.rtf file with non-standard formatting instructions, and the images. So you already have these and the RTF file separate.
RTF files are just the text with some formatting instructions, similar to HTML. So you can use simple text based string replacements.
An embedded image looks like this in my sample document:
{{\NeXTGraphic Screen Shot 2012-02-01 at 19.47.21.png \width13940 \height11020
}¬}
In the RTF file, change all occurrences of \NeXTGraphic to something like "Image:"; the other formatting will simply be ignored when you open it the next time (at least in my limited testing).
An embedded hyperlink looks like this:
{\field{\*\fldinst{HYPERLINK "http://superuser.com/questions/384862/osx-converting-rtfd-files-to-txt-without-deleting-hyperlinks-and-pictures"}}{\fldrslt applescript - OSX: Converting rtfd files to txt, without deleting hyperlinks and pictures - Super User}}\
\
}
Again, rather simple text replacement which you can do in most editors of your choice, or e.g. using sed on the command line. fldinst is the underlying hyperlink URL, fldrslt is the label.
Once you have replaced all images and hyperlinks by plain-text compatible alternatives, you can simply run textutil -convert txt Document.rtfd/TXT.rtf to convert the RTF file to plain text.
If you hadn't done the replacements of the embedded imaged and hyperlinks beforehand, these would have been lost.
Of course, textutil can convert to HTML and image files without losing information. If you're more comfortable scripting the replacements of HTML tags, you can do this first.