Simple answer - it works by generating a subclass and overriding the methods. non virtual and non abstract methods can not be overridden / implemented in a subclass, ergo can not be used.
> I want to use caching in business logic tier, where lot of non-virtual and non-
> abstract methods.
Simple - you want to eat a fully vegetarian kobe steak - wont happen, steaks are not vegetarian.
Ergo - you can not use BlToolkit aspect for this.
THAT SAID: I consider them surplus. BlToolkit is nice, but tries oto do a lot of thigns that others make better and have nothing to do with data access ;) Try looking at PostSharp for a bytecode postprocessing approach. That can easily handle even static methods by rewriting the bytecode after the compiler.