Try this
CREATE PROCEDURE myProc
@monthStart INT,
@yearStart INT,
@monthEnd INT,
@yearEnd INT
AS
BEGIN
-- check params
IF (@yearStart > @yearEnd) OR (@yearStart = @yearEnd AND @monthStart > @monthEnd)
BEGIN
RAISERROR('Invalid Parameters',16,1)
RETURN 1
END
SELECT *
FROM MyTable
WHERE [year] BETWEEN @yearStart AND @yearEnd
AND
CASE
WHEN [year] = @yearStart AND [month] < @monthStart THEN 0
WHEN [year] = @yearEnd AND [month] > @monthEnd THEN 0
ELSE 1
END = 1
RETURN 0
END
GO