HTML frames were once a really good technology for controlling page downloads. When people were connection at 9600 baud it was a pain to have to reload the header, menu, or footer, on every page load. Frames fixed this problem. However, since then bandwidth has increased, and there are better technologies that accomplish the same thing. Server side includes & other server side scripting platforms provide the same maintenance benefits to the webmaster. And things such as external CSS files provide the same bandwidth savings to the browser.
However frames remain poorly accessible. Search engines still have problems crawling them, users have trouble with page reloads & with bookmarking.
As such I can safely say that you shouldn't use frames. The only time I would entertain their use is in a web based application that you must log into first to access. In those cases neither bookmarking nor SE crawling is desired and the use of frames can provide some programming benefit.
The exception to this is iframes. Iframes or inline frames are a good technology for use when you're including content from another server within your site. The reason is that the iframe prevents delays in the other server from slowing down your page load. So by all means, use an iframe to serve advertisements or other extraneous content and you do not want slowing down how fast your actual content appears on the string. You don't much want SEs to crawl that content anyways.
You can also use iframes to block search engines from crawling sections of a page. For instance if you had something like a tag cloud that you worried would look like spam to a search engine you could serve it in an iframe from a file that is blocked by your robots.txt file. In this way a search engine will ignore that part of your page.
If you do use a DHTML menu you should include a proper text one either in your footer or in <noscript> tags.
As such I recommend not using Flash for your website, and especially not using one of those Flash splash screen as a welcome to your site. Your site homepage is the highest weighted part of your site in most cases, and if all that is there is some Flash welcome movie then you have almost no spiderable content, ranking for any keyword will be extremely difficult.
Of course Flash is a great technology if you're using it to display content you don't need the search engines to index, such as games, advertisements, or interactive tools.
Forms are necessary for allowing browsers to interact with web pages, but like with other technologies search engines do not fully support them. Specifically a search engine will never submit a form on your site. So, if the only way to reach your content is through submitting a form, a search engine will not reach that content.
This can be used to your advantage. If you have a link you do not want a search engine to follow, making the navigation form based and then dressing up the form submit "button" to look like a link with CSS is certainly an option.
If there is content you want a search engine to crawl but users typically access through a form, you will want to provide text based navigation to reach that same content. For instance many large information sites with huge databases of content or statistics typically serve all that content to visitors via a form based internal search engine. However, to get search engines to crawl every bit of content as well, it is necessary to build a method of browsing through the entire library using simple text links.