MarsEdit for Mac works well for writing posts off line and pushing them live when you're ready. It syncs multiple blogs, uploads media files from your computer or Flickr, handles tags, categories, post-status, etc. You can also set up stylesheets to see what your post will look like in the wild.