I am using Drupal7 and I am designing a blog engine site that any user can create a blog for him/herself and he/she can change the theme of his/her blog page. Is there any module to integrate with the core blog module and provides this ability for my site?
Take a look at the Switchtheme module.
Adds a block to allow users to switch between enabled themes.
Read the readme.txt of the module for the instructions.
If you wish to have different themes according to roles, take a look at the Role Theme Switcher module.
Useful Drupal module to assign separate themes for different roles (including anonymous) in your system.