A user determined access structure to information would be achievable and highly desirable. For instance, why do Bitpay need to collect my name and address for their invoices? They don't have a legitimate use for the information themselves. Instead, a pointer hash to the storage location of the specific details could instead be attached to the invoice that the merchant can follow to access the information if/when needed, then accessed with a unique key that is issued to them through the SSL session with their customer.
Wouldn't it be simpler to provide Bitpay with an encrypted version of your name/address information for the invoice using the merchants public address as the encryption key? Bitpay could store the encrypted information in case of a dispute with the merchant; the merchant could use the (decrypted) information for shipping and in the case of a dispute Bitpay could verify the correct address was sent to the merchant by looking at the information provided from the merchant and checking that it was signed by the customer.
These sorts of protocols have been possible for decades (thanks to Phil Zimmermann and others) but what has been lacking is the motivation to use them and an easy way for people to manage their public/private key pairs. Bitcoin wallets provide both motivation and easy of use.
BitID is an important step towards the dream of public-key cryptography becoming a ubiquitous part of daily life. Right now it's convenient to log in to new web sites using twitter, facebook or whatever social login, but why should I include them in my login process at all? Anyone with the capability of managing their own keys can create a unique pair for every site they visit using BitID. Or you can use one pair in cases where you want to establish a common identity across sites.
This BitID project is both simple and very important.