I wouldn't worry too much about the duplicate content penalty. Even if Google saw those two pages as duplicate content (which I really doubt), the worst they would do is kick one of those links to the bottom of the search results. This shouldn't matter, since the other link will retain its position, and it points to the same page anyway.
The 301 redirect is probably a good idea, since it will eventually pass all that page rank on to a single page. But I would redirect from the lower pagerank page to the higher pagerank page, and not the other way around.
Couple of questions:
One, can you use a 301 redirect to redirect from a URL like
www.mysite.com/index.php
to a URL like
www.mysite.com/
(given that they are the same page). Pretty sure that you can, but not sure I've ever seen this done.
Two, are
http://mysite.com/ and
http://mysite.com are seen as two different pages by Google (since one has a trailing slash and one doesn't)?