You probably want to do:
Bind<ISession>().ToMethod( () => new BurrowFramework().GetSession()).InRequestScope();
Have a look at the Ninject docs - ToProvider refers to a specific interface that a Ninject provider mandates, which allows you to manage more complex factories cleanly (as opposed to stuff that works nearly as an inline factory method as above).
EDIT: I interpret your comment as implying that you tried it but discovered I'd messed up in assuming that there was an overload of ToMethod where the delegate has no parameters, which subtle differences in delegate syntax are confusing you with. If that's not the case, I should have written:
Bind<ISession>().ToMethod( ctx => new BurrowFramework().GetSession()).InRequestScope();
Now, quick summary of C# syntax:
In C# 2, we had anonymous delegates as follows:
0) ToMethod( delegate {})...
1) ToMethod( delegate() {})...
2) ToMethod( delegate(x) {})...
3) ToMethod( delegate(X x) {})...
4) ToMethod( delegate(x, y) {})...
5) ToMethod( delegate(X x, Y y) {})...
In C# 3, we can create lambdas as follows:
1) ToMethod( () => {})...
2) Method( name => {})...
3) ToMethod( (X x) => {})...
4) ToMethod( (x, y) => {})...
5) ToMethod( (X x, Y y) => {})...
Which match zero, 1 of any type, 1 of type X, 2 of any type, an X followed by a Y respectively
They are all equivalent - the compiler generates the same output for each.
The difference is that there is no equivalent of syntax 0 in lambda syntax.
Highly recommend Jon Skeet's C# in Depth for making all this stuff clear (but wait for the second edition which is a short number of months away)
(If had time to give more in depth answer would look at the Ninject sources/APIs and see if they are consistent in always or never passing a context)