This is a great question, that has got me thinking.
Ok, 2 disclaimers. Firstly, this feels very dirty, and I can't believe there is not a better way. Secondly, DO NOT RUN THIS ON A PRODUCTION SERVER because a) it uses undocumented features, and b) it clears your buffer cache.
The premis I have come up with is to tear down the buffer cache, find the page numbers of the index, run the query and then count the pages that have been written back to memory.
The following is how to implement it:
--Get the Object ID
select * from sys.objects
where name = 'Name Of Index'
--Get The Index ID
select *
from sys.sysindexes
where id = objectid
--Get the Page IDs
dbcc ind('mydatabase','mytable',indexid)
--Drop Index Pages From Cache
DBCC DROPCLEANBUFFERS
--Run query
select * from mytable option(index(2))
--Look in the cache to see how many pages are there
select * from sys.dm_os_buffer_descriptors
where page_id in (PageID,
PageID)
and database_id = DB_ID('my_database')