Just so I'm clear you wish the dates to display as Monday - Sunday, but if the fromDate is not a monday, you wish to start on that day and similar to finish on the toDate if it is not a sunday?
This should get you started
DECLARE@FromDate DATETIME = '20140701',
@ToDate DATETIME = '20140731';
SELECTWeekNum = N + 1,
WeekStart = CASE WHEN CA1.WeekStart < @FromDate THEN @FromDate ELSE CA1.WeekStart END,
WeekEnd = CASE WHEN CA1.WeekEnd > @ToDate THEN @ToDate ELSE CA1.WeekEnd END
FROMdbo.GetNums(0,DATEDIFF(WK,@FromDate,@ToDate))
CROSS
APPLY(
SELECTDATEADD(WEEK,N,DATEADD(DAY,DATEDIFF(DD,0,@FromDate)/7*7,0)),
DATEADD(WEEK,N+1,DATEADD(DAY,DATEDIFF(DD,0,@FromDate)/7*7-1,0))
) AS CA1(WeekStart,WeekEnd)
Last week in your example starts on the 27th, think it should be the 28th.