We're doing this at the moment.
We don't worry too much about the components here. We have a set of issues of type Feature, which represent a high level view on what we are trying to achieve for the customer. At the end of the feature identification, we break these down into the stories - (issue type Story). We're expecting that at some point we may end up promoting completed features to components, but at the moment it works fine.
We relate the story issues to the feature issues via related tags, and extract customer reports to report on total time per feature. We don't break down as far as tasks, but that's only because we haven't needed to.
For releases, we build a number of releases at the start, 1.0.1.x, 1.0.2.x, 1.0.3.x etc. where the increment is the iteration. CruiseControl is set up to use the iteration number in the same way. To identify the stories for the release we assign them to a .x release, and then on release date, actually update the release tag to the correct build number in cruise control. This way we get both the road map, and the release notes.
Logging time we don't really do, we're more interested at the moment in estimating effort and tracking completion. (Planning Poker). We do have some custom reports where we roll these estimates up to the feature level.
We're also moving to 3.0, where I was hoping to get different workflows for each issue type, something the documentation says it does, but I can't quite figure out.
Something to note though - don't boil the ocean. Work out the minimum amount of functionality you can start with that will add value and go with that. Sure - have a long term view, but don't try and get it perfect first up. It will change.