The sys.dm_db_index_usage_stats DMV will give you access times but only at an index level. You can try applying this to the sys.dm_db_index_operational_stats function to associate it with partitions and look for any that have range_scan_count and singleton_lookup_count equal to zero:
SELECT DB_NAME(ios.database_id) DB, OBJECT_NAME(ios.object_id,ios.database_id) OBJECT, *
FROM sys.dm_db_index_usage_stats ius
INNER JOIN sys.dm_db_index_operational_stats(NULL,NULL,NULL,NULL) ios
ON ius.database_id=ios.database_id AND ius.index_id=ios.index_id
WHERE COALESCE(ius.last_user_lookup, ius.last_user_seek, ius.last_user_scan) IS NULL
AND ios.range_scan_count=0 AND ios.singleton_lookup_count=0 AND ios.database_id>4Note: this isn't exact (or even correct for all I know), but it's about the only starting point I can think of.
By the way, how do you intend to "archive" the data? How is it partitioned now? And why doesn't the partition scheme have a partition for such data to be archived to?