The proposed methods are not decentralized so I will give one more answer, since it seems you are fishing for something more theoretical.
The short answer to your question is no, you do not have to download all the blocks in the blockchain to be able to use a Dapp built in Solidity, however you do have to be up to date.
Basically, when people start up an Ethereum node it will generally not download most the entire blockchain but leave some "archival files" to be downloaded only on a as needed basis. This makes updating a node much faster.
Work right now is being done on a light client for Ethereum that will be used for low-bandwidth environments (like mobile devices). In a light client, the only thing downloaded to local storage are the block headers for every block, which significantly reduces startup time and storage. Then, more information can be grabbed from full nodes when particulars for a block are needed.
The point of downloading all the block headers is that basically you can verify that any transaction is valid and included in a block based on the headers with a high probability of success.
Hope this helps!