SFDC does not allow this currently. You cannot add lookup fields or junction objects to Tasks to enable what you want to do.
Workaround today include creating your own Task object and recreating Task functionality. This is how Milestones PM Application on AppExchange works (Source is available on GitHub).
Pros:
You can relate a Task to multiple Objects in the System.
Gives you flexibility to cusotmize however you want within confines of Force.com. Formula Fields, Roll Up Summaries, etc.
Cons:
You lose ALL the special features of Activities like:
Outlook Integration
Popups (Nag Boxes) for Task Reminders
Activities History Rollups on Account
Activity Archiving
etc.
One final note:
As of Summer 12 release they added the ability to relate an Activity (Of Type TASK) to multiple Contacts. You need to enable that in Setup Menu under Customize->Activities->Tasks.
The API object for the junction is "TaskRelation". This was a HUGE step up as before you could only relate one object and one contact to an Activity. Now you can do one object and up to 10 Contacts. If you inspect the TaskRelation object you will note that it stores both information for Contacts as well as Objects. #SAFEHARBOR It's possible in the future SFDC may use that object to relate to multiple Objects, the architecture supports it. Just a matter of performance I'm sure which is a huge consideration for SFDC.
It may be in your best interest to wait it out and see if they enable this in a future release.
UPDATE WINTER 15 SFDC is opening up this functionality as a BETA - "Add Custom Lookup Fields on Activities (Beta)". Page 107 of Release notes: https://help.salesforce.com/help/pdfs/en/salesforce_winter15_release_notes.pdf