I decided to implement this recently, too, and will release it soon in a new version of LinkSubmitOrSpan on Tassel.
Tapestry's runtime enhancement of abstract methods makes it difficult to mix this functionality by composition. Since implementing IFormComponent is simpler than implementing ILinkComponent, I created a new AbstractFormLinkComponent class derived from AbstractLinkComponent, copying and pasting the few simple methods necessary. This meant just a few small changes were required to LinkSubmit.
This is still ugly, but works. It would be great if the component framework divided up the internal component rendering process in a way that made rolling new components easier. I plan to look into that soon, though my java experience is limited (1 year, vs 8+ years of C++).