You send log messages to the QGIS log window using:
QgsMessageLog.logMessage(message, tag, level)
Tag is the title of the tab that will be displayed in the QGIS log window. Level is the message level (defaults to 0).
For example:
QgsMessageLog.logMessage('My message', 'MyPlugin')
See the QGIS API documentation for QgsMessageLog for details.
The log window can be made visible from the View->Panel->Log Messages menu.
The other way is to create a class that captures stdout and directs it to a log window within your plugin (the Script Runner plugin does this). Output from all print statements will be displayed in your log window, although this method is much more involved if you just want to display a few messages during development. You have to be careful doing this, as all print statements from other plugins will be sent to your plugin unless you capture and restore stdout as needed.