From the class reference of the SLComposeViewController addImage method:
This method returns NO if image does not fit in the currently available space or if the view controller has already been presented to the user (and therefore cannot be changed).
So you can still load the image asynchronously and on the completion block of your operation, set the image and present the view controller.
But you might need to see if the frozen UI is because of the image still loading or because the image size is just too big.
You can try first to load the image asynchronously and see if it helps: Download an asynchronous multiple images in UITableViewView?
While the image is being loaded, you can also put activity indicator and remove it on completion.
Otherwise, it might be the size of the image causing the issue and you will need to consider scaling down the image to be shared through Twitter.