I am working on a site where the same page needs to have different themes.
I am creating two modules:
1) Form module.
This module provides a block with a complex custom form (can't use a Drupal module for this because it's too specific)
2) Calendar module
This module also provides a block but with a calendar (also can't use a Drupal module for this because it's not just a simple calendar...it includes specific custom functionality)
Both blocks work by taking arguments from the URL (get) and deliver the result in the block contents.
I need to assign the blocks to the desired regions, but I need to be able to create a complete different page and block layout for the same functionality.
I thought of creating a new page for each client (who wants a custom page) With Themekey I can then specify the theme to use for the given page (based on url).
Now I can customize the theme as follows:
Within the custom theme folder I create page.tpl.php to create the layout and include the desired regions. The styling of the module blocks is done by linking the CSS files in the theme.info file. Because the theme is loaded with the CSS files, the form in the block can be styled with the css file. Optionally I can override block.tpl.php to provide a specific block layout (eg block borders?)